Generics 错误:应为类型参数,找到了闭包
我有以下资料: 我可以使用Box,但这需要修改Generics 错误:应为类型参数,找到了闭包,generics,rust,traits,Generics,Rust,Traits,我有以下资料: 我可以使用Box,但这需要修改助手,这在我的实际情况中并不理想: struct Helper { f: Box<dyn Fn()>, } struct User { h: Helper, } fn new_user() -> User { User { h: Helper { f: Box::new(|| {}) }, } } fn main(){} struct-Helper{ f:盒子, } 结构用户{
助手
,这在我的实际情况中并不理想:
struct Helper {
f: Box<dyn Fn()>,
}
struct User {
h: Helper,
}
fn new_user() -> User {
User {
h: Helper { f: Box::new(|| {}) },
}
}
fn main(){}
struct-Helper{
f:盒子,
}
结构用户{
h:助手,
}
fn新用户()->user{
使用者{
h:Helper{f:Box::new(| |{}),
}
}
fn main(){}
我还尝试用自定义特性替换Fn()
有什么建议吗?tl;博士您可能想要这样:
fn new_user() -> User<impl Fn()> {
User {
h: Helper { f: || {} },
}
}
通过这种方式,可以指定调用new\u user
,而无需任何参数,并且它返回一个user
,其中包含满足Fn()
的具体类型。请不要鼓励重复。
struct Helper {
f: Box<dyn Fn()>,
}
struct User {
h: Helper,
}
fn new_user() -> User {
User {
h: Helper { f: Box::new(|| {}) },
}
}
fn main(){}
fn new_user() -> User<impl Fn()> {
User {
h: Helper { f: || {} },
}
}
fn new_user<F3: Fn()>() -> User<F3> {
User {
// error: expected type parameter, found closure
h: Helper { f: || {} },
}
}
fn new_user() -> User<impl Fn()> {
User {
h: Helper { f: || {} },
}
}