Rust 의 불변 Path 구조체 탐색

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실습에서는 Rust 의 Path 구조체를 탐색합니다. Path 구조체는 기본 파일 시스템에서 파일 경로를 나타냅니다. UNIX 계열 시스템에서는 posix::Path, Windows 에서는 windows::Path로 구분됩니다. PathOsStr에서 생성될 수 있으며, 경로가 가리키는 파일 또는 디렉터리의 정보를 얻기 위한 다양한 메서드를 제공합니다. Path는 불변이며, 소유 버전은 PathBuf로, 자리에서 변경될 수 있습니다. PathPathBuf의 관계는 strString의 관계와 유사합니다.

참고: 실습에서 파일 이름을 지정하지 않으면 원하는 파일 이름을 사용할 수 있습니다. 예를 들어 main.rs를 사용하고 rustc main.rs && ./main으로 컴파일 및 실행할 수 있습니다.

Path

Path 구조체는 기본 파일 시스템에서 파일 경로를 나타냅니다. Path에는 UNIX 계열 시스템용 posix::Path와 Windows 용 windows::Path 두 가지 종류가 있습니다. 프리루드 (prelude) 는 적절한 플랫폼별 Path 변형을 내보냅니다.

PathOsStr에서 생성될 수 있으며, 경로가 가리키는 파일/디렉터리의 정보를 얻기 위한 여러 메서드를 제공합니다.

Path는 불변입니다. Path의 소유 버전은 PathBuf입니다. PathPathBuf의 관계는 strString의 관계와 유사합니다. PathBuf는 자리에서 변경될 수 있으며, Path로 참조 해제될 수 있습니다.

Path는 내부적으로 UTF-8 문자열로 표현되지 않고 OsString으로 저장됩니다. 따라서 Path&str로 변환하는 것은 무료가 아니며 실패할 수 있습니다 (옵션이 반환됩니다). 그러나 Pathinto_os_stringas_os_str를 사용하여 OsString 또는 &OsStr로 자유롭게 변환될 수 있습니다.

use std::path::Path;

fn main() {
    // &'static str 에서 Path 생성
    let path = Path::new(".");

    // display 메서드는 표시 가능한 구조체를 반환합니다.
    let _display = path.display();

    // join 은 OS 특정 구분자를 사용하여 경로와 바이트 컨테이너를 병합하고 PathBuf 를 반환합니다.
    let mut new_path = path.join("a").join("b");

    // push 는 PathBuf 를 &Path 로 확장합니다.
    new_path.push("c");
    new_path.push("myfile.tar.gz");

    // set_file_name 은 PathBuf 의 파일 이름을 업데이트합니다.
    new_path.set_file_name("package.tgz");

    // PathBuf 를 문자열 슬라이스로 변환
    match new_path.to_str() {
        None => panic!("new path 는 유효한 UTF-8 시퀀스가 아닙니다."),
        Some(s) => println!("new path 는 {}", s),
    }
}

다른 Path 메서드 (posix::Path 또는 windows::Path) 와 Metadata 구조체도 확인하세요.

요약

축하합니다! Path 실습을 완료했습니다. LabEx 에서 더 많은 실습을 통해 기술을 향상시킬 수 있습니다.