当我将字符串推送到路径上时,存储的当前目录的一部分似乎丢失了。例如,如果我......
let mut path = "/test.txt";
let mut localpath = env::current_dir().unwrap();
println!("{}", localpath.display());
localpath.push(path);
println!("{}", localpath.display());
我在控制台上获得类似于
的输出C:\User\JohnDoe\Desktop\testfolder
C:\test.txt
有谁知道为什么push(path)
可能会删除\User\JohnDoe\Desktop\testfolder
?
答案 0 :(得分:3)
来自docs:
如果
path
是绝对的,它将替换当前路径。在Windows上:
- 如果
的前缀(如果有)之外的所有内容path
有根但没有前缀(例如\windows
),则替换 除了self
。- 如果
path
有 前缀但没有root,它取代了self
。
您的示例属于第一个要点,除了C:
\test.txt
之外,它取代了所有内容。
解决方案是使用非绝对路径,即test.txt
。