gpt4 book ai didi

string - 如何复制 String 或 str

转载 作者:行者123 更新时间:2023-11-29 08:19:11 25 4
gpt4 key购买 nike

我有以下代码:

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 变量存活更长时间。看起来 Stringstr 都不支持 Copy 特性。所以主要问题是如何使上面的代码工作?

我需要以某种方式复制一个字符串。在 C 中,我会使用 memcpystrcpy 来完成该任务。 Rust 中有类似的函数吗?

最佳答案

调用 unwrap() 将移动您的 path 对象。最简单的方法是在循环的开头移动它一次,方法是说

let path = path.unwrap();

然后使用展开的路径对象:

let mut dirs = vec![String::from(".")];

while dirs.len() > 0 {
let paths = fs::read_dir(dirs.pop().unwrap()).unwrap();
for path in paths {
let path = path.unwrap();
if path.metadata().unwrap().is_dir() {
dirs.push(String::from(path.path().to_str().unwrap()))
}
}
}

关于string - 如何复制 String 或 str,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34994720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com