假设我有一个特征
trait A {
fn new() -> Self where Self : Sized;
fn foo(&self) -> i32;
}
struct B {
data : i32
}
impl A for B {
fn new() -> Self {
B {data : 42}
}
fn foo(&self) -> i32 {
self.data
}
}
现在我可以使用Box<dyn A>
了,只是没有可用的new()方法。当我有一个通用的T : A
时,我可以执行T::new()
。因此,我可以将A用作特征对象(没有阻止这种情况的函数),并且可以在模板化代码中使用它,并在其上使用所有函数。
我的问题是,当Clone
作为超级性状时,是否有可能获得这种行为?在dyn A
的情况下,A
不实现克隆。在一般情况下是does。
转载请注明出处:http://www.mrdmz.com/article/20230526/1979998.html