繁体   English   中英

如何克隆 Vec <Box<dyn SomeTrait> &gt; 在一个物体上?

[英]How can I clone a Vec<Box<dyn SomeTrait>> on an object?

我有以下特征定义表示 DSL 中的子块:

pub trait SubBlock {
    fn get_command(&self) -> Command;
    fn get_parent_id(&self) -> u32;
}

这里

        .map(|bsb| {
          *bsb
        })

您触发Copy而不是Clone

为了能够.clone()值,您需要知道它们实现了Clone特征。

所以做吧

pub children: Option<Vec<Box<dyn SubBlock + Clone>>>

并为所有可能最终出现在该向量中的事物实现Clone ,然后使用.clone()

在那之后,其余的应该会变得更容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM