Path :: join没有按预期执行

Ama*_*ani 2 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");

    println!("\nUser dir: {:?}", user_home_dir);
    println!("Image folder: {:?}", images_dir);
}
Run Code Online (Sandbox Code Playgroud)

此代码打印:

User dir: "C:\\Users\\username"
Image folder: "C:\\AppData\\Local\\Packages"
Run Code Online (Sandbox Code Playgroud)

我的期望是它应该打印:

User dir: "C:\\Users\\username"
Image folder: "C:\\Users\\username\\AppData\\Local\\Packages"
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Sch*_*ern 5

Path::join使用相同的语义PathBuf::push.那些文件说......

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

use std::path::PathBuf;

let mut path = PathBuf::from("/tmp");
path.push("/etc");
assert_eq!(path, PathBuf::from("/etc"));
Run Code Online (Sandbox Code Playgroud)

\\AppData\\Local\\Packages是绝对的.你必须先使它相对.