Метод canonicalize
Метод canonicalize класса Path возвращает
каноническую форму пути. Канонический путь - это абсолютный
путь, в котором раскрыты все символические ссылки, а также
удалены компоненты . и ... Метод не принимает
параметров и возвращает значение типа
io::Result<PathBuf>. Если путь не существует или
к нему нет доступа, метод вернёт ошибку.
Синтаксис
path.canonicalize()
Пример
Давайте получим канонический путь для текущей директории:
use std::path::Path;
fn main()
{
let path = Path::new(".");
let res = path.canonicalize();
println!("{:?}", res);
}
Результат выполнения кода:
Ok("/home/user/project")
Пример
Давайте получим канонический путь для файла, указанного
с избыточными компонентами . и ..:
use std::path::Path;
fn main()
{
let path = Path::new("./src/../src/main.rs");
let res = path.canonicalize();
println!("{:?}", res);
}
Результат выполнения кода:
Ok("/home/user/project/src/main.rs")
Пример
Давайте попробуем получить канонический путь для несуществующего файла:
use std::path::Path;
fn main()
{
let path = Path::new("nonexistent_file.txt");
let res = path.canonicalize();
println!("{:?}", res);
}
Результат выполнения кода:
Err(Os { code: 2, kind: NotFound, message: "No such file or directory" })
Смотрите также
-
метод
join,
который присоединяет компонент к пути -
метод
parent,
который возвращает родительскую директорию пути -
метод
exists,
который проверяет, существует ли путь -
метод
is_absolute,
который проверяет, является ли путь абсолютным