私はさまざまなプラットフォームの元のデータを使用して、最初の2つのファイナルファンタジーゲームを再実装しようとしています。私はgetoptsのクレートを使用して2つのプログラム引数を取得し、match
を使用して両方を処理したいが、最初の一致要素を実行するだけである。私はタイプで何かをねじ込んだと思う。なぜマッチで2番目のマッチアームを使用しないのですか?
多分、別の方法がありますか?私は公式のRustドキュメントを使用して失われているし、インターネット上のチュートリアルは本当に人にやさしいものではありません。ここで
はコードです:let args: Vec<String> = env::args().map(|x| x.to_string()).collect();
if(args.len() < 3) {
println!("=====ERROR=====\nInvalid number of parameters\nExpected: <gamename> <gamerom>\nType in: 'help me' to get some help.");
process::exit(1);
}
let ref game = args[1];
let ref rom = args[2];
match game {
help => {
println!("=====HELP======");
match rom {
list => println!("Available games: ff1, ff2\nAvailable roms: ff1_j_msx, ff1_j_nes, ff1_u, ff1and2, ff2_j, ff2_u_proto"),
me => println!("Available help commands:\nlist -> List of available games and roms.\nme -> This help"),
_ => println!("=====ERROR=====\nInvalid help command.")
}
},
_ => println!("=====ERROR=====\nInvalid game, type in 'help me' to get some help.")
}
あなたの例では、[getopts](https://doc.rust-lang.org/getopts/getopts/index.html)は使用しません。あなたはそれを使いたいのですか? – Stargateur
あなたの質問に答えることはできませんが、代替ライブラリ:[Clap](https://github.com/kbknapp/clap-rs#quick-example)は、私がRustで見た最も使い慣れたコマンドラインパーサーです。 –
@Stargateurあなたは正しい:私はそれを使いたかったが、時には忘れてしまった。 – user160995