Given a relative path:
PathBuf::from("./cargo_home")
Is there a way to get the absolute path?
Rust 1.5.0 added std::fs::canonicalize
, which sounds pretty close to what you want:
Returns the canonical form of a path with all intermediate components normalized and symbolic links resolved.
Note that, unlike the accepted answer, this removes the ./
from the returned path.
A simple example from my machine:
use std::fs;
use std::path::PathBuf;
fn main() {
let srcdir = PathBuf::from("./src");
println!("{:?}", fs::canonicalize(&srcdir));
let solardir = PathBuf::from("./../solarized/.");
println!("{:?}", fs::canonicalize(&solardir));
}
Ok("/Users/alexwlchan/Developer/so-example/src")
Ok("/Users/alexwlchan/Developer/solarized")