Rustでプログラミングをしていて、少し詰まったので。
広告
結論のコード
let relative_path = Path::new("relative.txt"); //相対パス
let pwd = env::current_dir().unwrap(); //現在のディレクトリ
let absolute_path = pwd.join(relative_path); //絶対パス
これで、absolute_pathに絶対パスが入ります。
解説
絶対パスが、現在のディレクトリからのパスであることを利用します。
まず、コード2行目で現在のディレクトリを取得します。
あとはPathBufにはjoinメソッドがあるので、相対パスをくっつけるだけです。
注意点
なお絶対パスは求まりますが、cleanされたパスではありません。ですので、場合によってはcurrent/./relative.txtみたいになります。
これらをきれいなパスに直したい場合、ファイルが存在するはずであればPathBuf::canonicalizeメソッドを、そうでなければ他のクレートなどを使ってパスをクリーンにする必要があります。