本文要解决的问题如题所示:代码如下
use std::env;
fn main() {
let get_arg:Vec<String>=env::args().collect();
//get_arg[0],第一个参数为target路径.exe,
//如target\debug\my_cli_env.exe,从第二参数开始才是有效的命令参数
if get_arg.len() <=1 {
println!("未输入命令,请先输入命令!");
return;
}
let command = &get_arg[1..];
//match枚举两个参数,第一个为参数集合,第二个为参数长度
match (command,command.len()){
(c,len) if c.contains(&"hello".to_string()) =>{
showcmdstring(c,len);
},
(c,len) if c.contains(&"ok".to_string()) =>{
showcmdstring(c,len);
},
(c,len) if c.contains(&"do".to_string()) =>{
showcmdstring(c,len);
},
_ => {
showcmdstring(&["其它命令".to_string()],0);
}
}
}
fn showcmdstring(c:&[String],len:usize){
println!("输入了 {:?} 命令,参数个数为:{}",c,len);
for i in c{
println!(" 参数:{}",i);
}
}
/*
输入 cargo run do v 123
输出如下
输入了 ["do", "v", "123"] 命令,参数个数为:3
参数:do
参数:v
参数:123
*/