Функция canonicalize
pub async fn canonicalize(path: impl AsRef<Path>) -> Result<PathBuf>
fs.Возвращает каноническую абсолютную форму пути, в которой нормализованы все промежуточные компоненты и разрешены символические ссылки.
Это асинхронная версия функции std::fs::canonicalize.
Поведение, зависящее от платформы
В настоящее время эта функция соответствует функции realpath в Unix и функциям CreateFile и GetFinalPathNameByHandle в Windows. Обратите внимание, что это может измениться в будущем.
В Windows эта функция преобразует путь в формат с синтаксисом путей увеличенной длины, что позволяет программе использовать более длинные имена путей, но означает, что к нему можно добавлять только пути, разделённые обратной косой чертой, и он может быть несовместим с другими приложениями (если передать его приложению в командной строке или записать в файл, который может прочитать другое приложение).
Ошибки
Эта функция вернёт ошибку в следующих ситуациях, но не только в них:
-
pathне существует. - Промежуточный компонент пути не является каталогом.
Примеры
use tokio::fs;
use std::io;
#[tokio::main]
async fn main() -> io::Result<()> {
let path = fs::canonicalize("../a/../foo.txt").await?;
Ok(())
}
MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/fs/fn.canonicalize.html