私はRustでGitコマンドを作成しようとしています。私はclap
引数パーザcrateを使ってコマンドラインの処理を行っています。私は自分のコマンドにオプションの引数を取って、作業するディレクトリを指定します。コマンドがオプションを受け取らない場合、ユーザーのホームディレクトリが仮定されます。matchステートメントからの値の割り当て
std::env::home_dir
関数を使用してユーザーのホームディレクトリを取得できることがわかっていますが、混乱する部分は、match
演算子を使用してパスの値を取得する方法です。私はpath.to_str()
が十分に長く住んでいないと言って、これをコンパイルしようとするとエラーメッセージが出
use std::env;
fn main() {
// Do some argument parsing stuff...
let some_dir = if matches.is_present("some_dir") {
matches.value_of("some_dir").unwrap()
} else {
match env::home_dir() {
Some(path) => path.to_str(),
None => panic!("Uh, oh!"),
}
};
// Do more things
を:ここで私がしようとしてきたものです。 to_str
から返された値がmatch
スコープの長さだけ存続しますが、別の関数を呼び出す必要があるmatchステートメントからどのように値を返すことができますか?
私はあなたがアドバイスした通りにパスを修正できるように、実際には文字列をPathBufオブジェクトに変換してしまいました。 –