Generics 错误:应为类型参数,找到了闭包

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:盒子, } 结构用户{

我有以下资料:

我可以使用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:盒子,
}
结构用户{
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: || {} },
    }
}