构造函数为具有闭包字段的结构生成闭包

时间:2019-02-13 23:59:58

标签: rust

我正在尝试为具有闭合字段的结构实现构造函数。闭包必须在构造函数中生成。以下示例代码不起作用:

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时没有运气)。有人可以给我一些提示吗?

0 个答案:

没有答案