Функция canonicalize
Функция canonicalize из модуля fs
возвращает канонический абсолютный путь к файлу
или директории. Она разрешает все символические
ссылки, а также убирает из пути компоненты
. и ... Параметром функция
принимает путь, который нужно канонизировать.
В случае успеха возвращается значение типа
PathBuf, обёрнутое в Result.
Синтаксис
use std::fs;
fs::canonicalize(path)
Пример
Давайте получим канонический путь к текущей директории, используя точку:
use std::fs;
fn main()
{
let res = fs::canonicalize(".");
println!("{:?}", res);
}
Результат выполнения кода:
Ok("/home/user/project")
Пример
Давайте канонизируем путь, содержащий
компонент .., чтобы убедиться, что
он устраняется из итогового пути:
use std::fs;
fn main()
{
let res = fs::canonicalize("./subdir/../abcde");
println!("{:?}", res);
}
Результат выполнения кода:
Ok("/home/user/project/abcde")
Пример
Давайте попробуем канонизировать путь, которого не существует, и обработаем ошибку:
use std::fs;
fn main()
{
let res = fs::canonicalize("/no/such/path/12345");
println!("{:?}", res);
}
Результат выполнения кода:
Err(Os { code: 2, kind: NotFound, message: "No such file or directory" })
Смотрите также
-
функция
read_link,
которая читает символическую ссылку и возвращает путь, на который она указывает -
функция
symlink,
которая создаёт символическую ссылку на файл или директорию -
функция
metadata,
которая возвращает метаданные файла или директории -
функция
read_dir,
которая возвращает итератор по записям директории