Rustについて基本からしっかり学んでいく本連載。第16回は、ファイルやディレクトリのパスの操作、そしてファイルシステムの操作について。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
連載第15回では、ファイルの入出力を紹介しました。その際、ファイル名をopen関数などに与えて対象のファイルを指定しましたが、実際にはパスを表すPath構造体のインスタンスが与えられていることに触れました。ここでは、Path構造体とその可変版であるPathBuf構造体を掘り下げて、パス文字列の自由自在の操作を紹介します。
Path構造体とPathBuf構造体は、std::pathモジュールにあります。std::pathモジュールには7個の構造体がありますが、代表的なのはこの2つです。それぞれのおおまかな役割は以下の通りです。
Path構造体ではパスは不変となり、参照系の操作しか受け付けませんが、PathBuf構造体ではパスは可変となり、更新系の操作を受け付けます。では、常にPathBuf構造体を使えばいいかというとそうではなく、PathBuf構造体は判定や取得などの関数は持たないので、それらの機能が必要ならPath構造体を使う必要があります。つまり、以下のような使い分けになります。
Path構造体の判定関数も、PathBuf構造体の加工関数も、OSのパスの区切り文字などを極力意識しないで操作できるようになっています。文字列操作関数をパスの判定や加工に使うと、どうしても区切り文字などを意識しなければなりませんが、そういった配慮が不要なので極めて容易にパスが操作できるようになっています。
以降、Path構造体を中心にさまざまな判定の例を紹介し、PathBuf構造体を用いたパスの加工についても例を紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.