[英]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.