仅当自身大小时才具有超特质


假设我有一个特征

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