当我将文件推送到它上面时,为什么PathBuf会丢失当前目录?

时间:2015-03-07 03:20:16

标签: path rust

当我将字符串推送到路径上时,存储的当前目录的一部分似乎丢失了。例如,如果我......

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

1 个答案:

答案 0 :(得分:3)

来自docs

  

如果path是绝对的,它将替换当前路径。

     

在Windows上:

     
      
  • 如果path有根但没有前缀(例如\windows),则替换   除了self
  • 的前缀(如果有)之外的所有内容   
  • 如果path有   前缀但没有root,它取代了self
  •   

您的示例属于第一个要点,除了C: \test.txt之外,它取代了所有内容。

解决方案是使用非绝对路径,即test.txt