Ответ 1
Rust 1.5.0 добавлен std::fs::canonicalize
, который звучит довольно близко к тому, что вы хотите:
Возвращает каноническую форму пути со всеми нормализованными промежуточными компонентами и разрешенными символическими связями.
Обратите внимание, что в отличие от принятого ответа это удаляет ./
из возвращаемого пути.
Простой пример с моей машины:
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")