How to canonicalize home directory?

Viewed 67

I'm trying to canonicalize a simple path containing the home directory ~ in Rust:

use std::path::PathBuf;

fn main() {
  let path_str = "~"; // fails
  // let path_str = ".."; // works
  let path_buf = PathBuf::from(path_str);
  let canon = path_buf.canonicalize().unwrap();
  println!("{:?}", canon);
}

In my actual program, the ~ path comes from user input. This program fails on the .canonicalize().unwrap(), giving Os { code: 2, kind: NotFound, message: "No such file or directory" }.

Is it a bug or a feature that Rust fails to canonicalize the ~? What should I be doing instead?

0 Answers
Related