18.3 Path
Path 구조체는 파일시스템에 하부로 파일 경로를 표현한다. 여기에는 두 가지 Path: posix::Path는 UNIX-계통 시스템을, window::Path는 Windows를, 종류가 있다. 도입부에 플랫폼에 적합한 Path 형태를 export한다.
Path는 어떤 타입에서든 만들어질 수 있게끔 BytesContainer trait를 구현했고, 이는 string과 유사하며, 제공되는 몇개의 메소드는 파일/디렉토리 정보를 path로부터 얻을 수 있게 한다.
주의할 점은 Path는 국제적 표현체인 UTF-8 string이 아니다, 하지만 대신 바이트 벡터(Vec<u8>)로 저장된다. 그래서 Path를 &str로 변환하는 것은 원하는 대로 되지 않고 실패를 하게 될 것이다(Option이 반환된다).
use std::path::Path;
fn main() {
// `&'static str`로 `Path` 를 만들기
// Create a `Path` from an `&'static str`
let path = Path::new(".");
// `display` 메소드는 `출력`가능한 구조체를 반환한다.
let display = path.display();
// `join`은 byte container로 path를 병합하며 OS에 지정된 구분자를 사용한다.
// 그리고 새로운 path를 반환한다.
let new_path = path.join("a").join("b");
// path를 string 조각으로 변환한다.
match new_path.to_str() {
None => panic!("new path is not a valid UTF-8 sequence"),
Some(s) => println!("new path is {}", s),
}
}다른 Path 메소드와 FileStat 구조체를 꼭 검토해보라(posix::Path 혹은 windows::Path).