MST

星途 面试题库

面试题:Rust位置参数在控制台简单运用实现

编写一个Rust程序,从控制台接收两个位置参数,将它们解析为整数并输出两者之和。请展示完整的代码,并说明`std::env::args()`的使用要点。
50.0万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
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()使用要点

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