Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust Path::join不执行预期的操作_Rust - Fatal编程技术网

Rust Path::join不执行预期的操作

Rust Path::join不执行预期的操作,rust,Rust,我有一个防锈代码: use std::env; use std::path::{Path, PathBuf}; fn main() { let user_home_dir: PathBuf = env::home_dir().expect("Could not find home directory."); let images_dir = Path::new(&user_home_dir).join("\\AppData\\Local\\Packages");

我有一个防锈代码:

use std::env;
use std::path::{Path, PathBuf};

fn main() {
    let user_home_dir: PathBuf = env::home_dir().expect("Could not find home directory.");
    let images_dir = Path::new(&user_home_dir).join("\\AppData\\Local\\Packages");

    println!("\nUser dir: {:?}", user_home_dir);
    println!("Image folder: {:?}", images_dir);
}
此代码打印:

User目录:“C:\\Users\\username”
图像文件夹:“C:\\AppData\\Local\\Packages”
我的期望是,它应该打印:

User目录:“C:\\Users\\username”
图像文件夹:“C:\\Users\\username\\AppData\\Local\\Packages”
我做错了什么?

使用与相同的语义。那些医生说

推送绝对路径将替换现有路径:

use std::path::PathBuf;

let mut path = PathBuf::from("/tmp");
path.push("/etc");
assert_eq!(path, PathBuf::from("/etc"));

\\AppData\\Local\\Packages
是绝对值。您必须首先将其设置为相对的。

请不要使用操作系统特定的代码,如
join(“\\AppData\\Local\\Packages”)

请使用
join(“AppData”).join(“Local”).join(“Packages”)
,因为它使用平台路径分隔符。它还解决了您的问题,因为每个路径元素都不是绝对的。

join(\\AppData\\Local\\Packages)中删除前导“\\”。它被解释为驱动器根目录。@PeterHall,谢谢,您的评论使您很容易理解下面接受的答案。