我正在尝试为具有闭合字段的结构实现构造函数。闭包必须在构造函数中生成。以下示例代码不起作用:
struct MyStruct<F>
where
F: Fn(String) -> String,
{
f: F,
}
impl<F> MyStruct<F>
where
F: Fn(String) -> String,
{
fn new() -> Self {
Self { f: |x| x }
}
}
error[E0308]: mismatched types
--> src/lib.rs:13:19
|
13 | Self { f: |x| x }
| ^^^^^ expected type parameter, found closure
|
= note: expected type `F`
found type `[closure@src/lib.rs:13:19: 13:24]`
我想这个问题是由于每个闭包都有自己的匿名类型引起的,但是我不知道该如何解决(我尝试使用Box
时没有运气)。有人可以给我一些提示吗?