Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Path

Тип Path представляє шляхи до файлів у базовій файловій системі. На всіх платформах існує один std::path::Path, який абстрагує семантику шляхів і роздільники, специфічні для платформи. За потреби введіть його в область видимості за допомогою use std::path::Path;.

Path можна створити з OsStr, і він надає кілька методів для отримання інформації про файл/директорію, на яку вказує шлях.

Path є незмінним. Власною версією Path є PathBuf. Співвідношення між Path і PathBuf подібне до str і String: PathBuf можна змінювати на місці, і на нього можна розіменовуватися до Path.

Зверніть увагу, що Path не представлений внутрішньо як рядок UTF-8, а натомість зберігається як OsString. Тому перетворення Path на &str не є безкоштовним і може завершитися невдачею (повертається Option). Однак Path можна вільно перетворити на OsString або &OsStr за допомогою into_os_string і as_os_str відповідно.

use std::path::Path;

fn main() {
    // Create a `Path` from an `&'static str`
    let path = Path::new(".");

    // The `display` method returns a `Display`able structure
    let _display = path.display();

    // `join` merges a path with a byte container using the OS specific
    // separator, and returns a `PathBuf`
    let mut new_path = path.join("a").join("b");

    // `push` extends the `PathBuf` with a `&Path`
    new_path.push("c");
    new_path.push("myfile.tar.gz");

    // `set_file_name` updates the file name of the `PathBuf`
    new_path.set_file_name("package.tgz");

    // Convert the `PathBuf` into a string slice
    match new_path.to_str() {
        None => panic!("new path is not a valid UTF-8 sequence"),
        Some(s) => println!("new path is {}", s),
    }
}

Обов’язково перегляньте інші методи Path і структуру Metadata.

Дивіться також:

OsStr і Metadata.