ファイルパス
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 はそれぞれ into_os_string と as_os_str を使用して、OsString または &OsStr に自由に変換できます。
use std::path::Path; fn main() { // `&'static str` から `Path` を作成する let path = Path::new("."); // `display` メソッドは `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!("新しいパスは有効な UTF-8 シーケンスではありません"), Some(s) => println!("新しいパスは {} です", s), } }
他の Path メソッドと Metadata 構造体も必ず確認してください。