Rust by Example

18.3 Path

構造体Pathは、ファイルシステム中のパスを表します。Pathには2つの変種があります。UNIXライクなファイルシステムのためのposix::Pathと、Windows用のwindows::Pathです。それぞれプラットフォームに対応したPathをエクスポートします。

BytesContainerトレイトを実装している型ならばほぼ全て、そこからPathを作成できます。例えば文字列がそうです。そうすればpathが指すファイル・ディレクトリの情報を取得するためのメソッドがいくつか使えるようになります。

Pathの実態はUTF-8の文字列ではなく、バイト型のベクタ(Vec<u8>)であることに注意しましょう。したがって、Path&strに変換するのは無条件ではなく、失敗する可能性があります。それゆえOption型が返されます。

use std::path::Path; fn main() { // `&'static str`から`Path`を作成 let path = Path::new("."); // `display`メソッドは`Show`可能な構造体を返す。 let display = path.display(); // `join`はOS固有のセパレータによってバイトのコンテナ型であるパス // を結合し、新しいパスを返す。 let new_path = path.join("a").join("b"); // パスを文字列のスライスに変換する。 match new_path.to_str() { None => panic!("new path is not a valid UTF-8 sequence"), Some(s) => println!("new path is {}", s), } }

他のPathメソッド(posix::Pathwindows::Path)をチェックするのを忘れずに!それとFileStat構造体も見ておくことをオススメします。