I have this Rust code:
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);
}
This code prints:
User dir: "C:\\Users\\username"
Image folder: "C:\\AppData\\Local\\Packages"
My expectation is that it should print:
User dir: "C:\\Users\\username"
Image folder: "C:\\Users\\username\\AppData\\Local\\Packages"
What am I doing wrong?
Path::join uses the same semantics as PathBuf::push. Those docs say...
Pushing an absolute path replaces the existing path:
use std::path::PathBuf; let mut path = PathBuf::from("/tmp"); path.push("/etc"); assert_eq!(path, PathBuf::from("/etc"));
\\AppData\\Local\\Packages is absolute. You have to make it relative first.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With