fn main() {
let args: Vec<String> = std::env::args().collect();
if args.len() != 3 {
eprintln!("Usage: {} <num1> <num2>", args[0]);
return;
}
let num1: i32 = match args[1].parse() {
Ok(num) => num,
Err(_) => {
eprintln!("Invalid number: {}", args[1]);
return;
}
};
let num2: i32 = match args[2].parse() {
Ok(num) => num,
Err(_) => {
eprintln!("Invalid number: {}", args[2]);
return;
}
};
let sum = num1 + num2;
println!("The sum is: {}", sum);
}
std::env::args()
使用要点
- 返回值类型:
std::env::args()
返回一个Args
迭代器,它产生String
类型的值,这些值代表命令行参数。
- 包含程序名:迭代器的第一个元素是程序本身的名称,所以如果需要获取实际传递的参数,通常从索引1开始(如上述代码从
args[1]
和args[2]
获取参数)。
- 类型转换:由于
args()
返回的是String
类型,若要进行数值运算,需要将其转换为合适的数值类型,如i32
,使用parse
方法,同时要处理可能的转换错误(如代码中使用match
处理parse
的结果)。
- 收集参数:通常需要将
Args
迭代器收集到一个Vec<String>
中,以便通过索引访问各个参数,如代码中let args: Vec<String> = std::env::args().collect();
。