1
我有以下代碼:我怎樣才能複製串或STR
let mut dirs = vec![String::from(".")];
// This one doesn't work too:
//let mut dirs = vec!["."];
while dirs.len() > 0 {
let paths = fs::read_dir(dirs.pop().unwrap()).unwrap();
for path in paths {
if path.unwrap().metadata().unwrap().is_dir() {
dirs.push(String::from(path.unwrap().path().to_str().unwrap()).clone())
// This one doesn't work too:
//dirs.push(path.unwrap().path().to_str().unwrap())
}
}
}
它總是給人一種編譯錯誤:use of moved value: 'path' [E0382]
。
我試過不同的方法,仍然不明白我怎樣才能複製一個字符串path.to_str()
因此它可以存活比path
更長的變量。看起來像String
和str
不支持Copy
特質。 所以主要的問題是如何使上面的代碼工作?
我需要以某種方式製作一個字符串的副本。在C中,我將使用memcpy
或strcpy
來執行該任務。 Rust中有沒有類似的功能?
你似乎已經解決了這個問題,以瞭解在借來的' &str'到你自己的'String'對象。 'String :: from'工作得很好 –