Метод ancestors
Метод ancestors возвращает итератор, который
последовательно выдаёт все родительские пути, начиная
с самого пути и заканчивая корневым компонентом.
Метод не принимает параметров и возвращает значение
типа Ancestors, которое реализует трейт
Iterator. Каждая итерация возвращает ссылку
на Path.
Синтаксис
path.ancestors()
Пример
Давайте получим всех предков пути "/home/user/docs/file.txt"
и выведем их в цикле:
use std::path::Path;
fn main()
{
let path = Path::new("/home/user/docs/file.txt");
for ancestor in path.ancestors()
{
println!("{:?}", ancestor);
}
}
Результат выполнения кода:
"/home/user/docs/file.txt"
"/home/user/docs"
"/home/user"
"/home"
"/"
Пример
Давайте получим всех предков относительного пути
"abcde/12345":
use std::path::Path;
fn main()
{
let path = Path::new("abcde/12345");
for ancestor in path.ancestors()
{
println!("{:?}", ancestor);
}
}
Результат выполнения кода:
"abcde/12345"
"abcde"
""
Пример
Давайте найдём первого существующего предка пути и выведем его:
use std::path::Path;
fn main()
{
let path = Path::new("/home/user/docs/file.txt");
let res = path.ancestors()
.find(|p| p.exists());
println!("{:?}", res);
}
Результат выполнения кода:
Some("/home")
Смотрите также
-
метод
parent,
который возвращает родительский путь -
метод
components,
который возвращает итератор по компонентам пути -
метод
file_name,
который возвращает последний компонент пути -
метод
join,
который присоединяет путь к текущему пути