- 参数分析
参数分析
匹配可以用来解析简单的参数:
use std::env;fn increase(number: i32) {println!("{}", number + 1);}fn decrease(number: i32) {println!("{}", number - 1);}fn help() {println!("usage:match_args <string>Check whether given string is the answer.match_args {{increase|decrease}} <integer>Increase or decrease given integer by one.");}fn main() {let args: Vec<String> = env::args().collect();match args.len() {// 没有传入参数1 => {println!("My name is 'match_args'. Try passing some arguments!");},// 一个传入参数2 => {match args[1].parse() {Ok(42) => println!("This is the answer!"),_ => println!("This is not the answer."),}},// 一条命令和一个传入参数3 => {let cmd = &args[1];let num = &args[2];// 解析数字let number: i32 = match num.parse() {Ok(n) => {n},Err(_) => {println!("error: second argument not an integer");help();return;},};// 解析命令match &cmd[..] {"increase" => increase(number),"decrease" => decrease(number),_ => {println!("error: invalid command");help();},}},// 所有其他情况_ => {// 显示帮助信息help();}}}
$ ./match_args RustThis is not the answer.$ ./match_args 42This is the answer!$ ./match_args do somethingerror: second argument not an integerusage:match_args <string>Check whether given string is the answer.match_args {increase|decrease} <integer>Increase or decrease given integer by one.$ ./match_args do 42error: invalid commandusage:match_args <string>Check whether given string is the answer.match_args {increase|decrease} <integer>Increase or decrease given integer by one.$ ./match_args increase 4243
