克隆一个自定义结构,每次想要使用它时都无法实现复制最佳方法吗?

时间:2016-03-11 13:37:28

标签: rust

我的结构有for dir in /opt/ADL_db/Users/mkhalil/OpenCV/positive/*; do OUTPUT="$(identify "$dir"/*.{jpg,png,jpeg)}" my_val1=$(echo $a3 | awk -F'x' '{print $1}') my_val2=$(echo $a3 | awk -F'x' '{print $2}') 字段,无法实现Vec

Copy

如果我想在我的代码中多次使用它,我每次都必须#[derive(Clone, Debug)] struct MyStruct { field: Vec<i32>, } impl MyStruct { fn new () -> MyStruct { MyStruct { field: vec![1, 2], } } fn overwrite(&mut self, strt: MyStruct) { self.field = strt.field; } }

clone()

这很好用,但这是完成此任务的最佳方法吗?还有其他更惯用的方法吗?

1 个答案:

答案 0 :(得分:4)

让我们回顾一下我们的数据处理故事:

  • 移动是关于转让所有权,因为不再需要原始变量
  • 克隆是关于创建副本,以便能够独立使用原始值和新值
  • 借用是关于临时借出一段受控时间的参考,以便能够在之前和之后使用原始变量(并且可能,如果借用&并且

在您的情况下,您应该在这里使用借用

&mut

要深入理解这个概念,请阅读the Rust Book。如果你来自垃圾收集的语言背景,章节4.7到4.10真的是必读的。