我有一个包含盒装闭包的结构。我希望能够为此结构实现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
?