我正在嘗試使用來自各種平臺的原始數據重新實現前2個最終幻想遊戲。我想使用getopts crate獲取2個程序參數,並通過使用match
來處理它們,但它只是執行第一個匹配元素。我想我搞砸了一些類型的東西。爲什麼比賽從不使用第二場比賽?
也許有另一種方法可以做到嗎?我失去了使用官方Rust文檔和互聯網上的任何教程都不是真正的noob友好。
下面是代碼:
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