我有以下代码:
let display_value = entry.path().display();
files_and_dirs.push(DiskEntry {
path: display_value.to_string(),
is_dir: is_dir(display_value.to_string()),
name: display_value.to_string()
});
If I write it thus:
let display_value = entry.path().display();
let dir_name = display_value.to_string();
files_and_dirs.push(DiskEntry {
path: dir_name,
is_dir: is_dir(dir_name),
name: dir_name
});
我遇到了以下错误:
由于
dir_name
的类型为std :: string :: String
,它没有实现Copy
特征,因此会发生移动
我知道在Rust中,当分配时值会被移动。我想声明一个变量并在第二个代码块中多次使用它。我该怎么做?
最初的回答:
您可以使用引用来避免将值移动到另一个变量中。例如:
let dir_name = String::from("example");
let second_reference = &dir_name;
let third_reference = &dir_name;
is_dir(&dir_name)
(如果你的函数允许这样做),要么使用 String 的clone
方法。 - Leśny Rumcajsis_dir
并不是问题。我想在三个地方声明一个变量并使用它,就像第二个代码块中那样。在 Rust 中应该如何正确实现这一点? - shashanka npath
字段声明为String
,你可以将你的单个变量传递到那里,但是你必须克隆它/使用to_owned
。在那里和任何地方都会拥有所有权。 - Leśny Rumcajs