如何为包含盒装闭包的结构实现Clone?

时间:2019-07-06 14:52:50

标签: rust

我有一个包含盒装闭包的结构。我希望能够为此结构实现Clone。但是,这不起作用。例如,考虑以下示例:

type Predicate<T> = Box<Fn(&T) -> bool>;

struct Foo {
    name: String,
}

struct FooPredicate(Predicate<Foo>);

impl Clone for FooPredicate {
    fn clone(&self) -> Self {
        Self(self.0)
    }
}

以上操作失败,因为我们无法移出借用的内容。另外,我们可以尝试使用类似Self(Box::new(*self.0))的方法,但这会失败,并出现未知的编译时大小错误。

我们如何使FooPredicate正确实施Clone

0 个答案:

没有答案