簡體   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