home ~ socials ~ projects ~ rss

Getting An Absolute PathBuf Path In Rust With Leading Slash

October 2023

".strip_prefix()" removes leading slashes.

use std::path::PathBuf;

fn main() {
  let dir_path = PathBuf::from("/alfa/bravo");
  let target_path = PathBuf::from("/alfa/bravo/charlie/delta.html");
  let cut_path = target_path.strip_prefix(dir_path);
  println!("{}", cut_path.unwrap().display());
}
Output:
charlie/delta.html

This is how I'm adding it back in to make absolute URLs for my site:

use std::path::PathBuf;

fn main() {
  let mut absolute_url = PathBuf::from("/");
  let source_dir = PathBuf::from("/alfa/bravo");
  let source_path = PathBuf::from("/alfa/bravo/charlie/delta.html");
  let relative_path = source_path.strip_prefix(source_dir).unwrap();
  absolute_url.push(relative_path);
  println!("{}", absolute_url.display());
}
Output:
/charlie/delta.html
end of line
Share link:
https://www.alanwsmith.com/en/2x/uy/5d/5p/?getting-an-absolute-pathbuf-path-in-rust-with-leading-slash