MST

星途 面试题库

面试题:Rust命名参数在控制台交互应用中的深度优化

设计并实现一个Rust控制台应用,该应用使用命名参数来处理用户输入。应用需要实现以下功能:支持用户通过命名参数指定操作模式(如“add”表示加法,“subtract”表示减法等),通过命名参数接收操作数。同时,应用要在控制台实时反馈操作结果,并处理可能出现的参数错误和异常情况,尽可能优化代码性能和用户体验,包括合理的错误提示在控制台输出 。
15.3万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::env;

fn main() {
    let args: Vec<String> = env::args().collect();

    if args.len() < 3 {
        eprintln!("Usage: rust_app --operation <add|subtract|...> --operand1 <number> --operand2 <number>");
        std::process::exit(1);
    }

    let mut operation = String::new();
    let mut operand1 = 0.0;
    let mut operand2 = 0.0;

    for i in 1..args.len() {
        match args[i].as_str() {
            "--operation" if i + 1 < args.len() => {
                operation = args[i + 1].clone();
            },
            "--operand1" if i + 1 < args.len() => {
                match args[i + 1].parse::<f64>() {
                    Ok(num) => operand1 = num,
                    Err(_) => {
                        eprintln!("Invalid operand1 value. Expected a number.");
                        std::process::exit(1);
                    }
                }
            },
            "--operand2" if i + 1 < args.len() => {
                match args[i + 1].parse::<f64>() {
                    Ok(num) => operand2 = num,
                    Err(_) => {
                        eprintln!("Invalid operand2 value. Expected a number.");
                        std::process::exit(1);
                    }
                }
            },
            _ => {
                eprintln!("Unknown argument: {}", args[i]);
                std::process::exit(1);
            }
        }
    }

    let result = match operation.as_str() {
        "add" => operand1 + operand2,
        "subtract" => operand1 - operand2,
        _ => {
            eprintln!("Unsupported operation: {}", operation);
            std::process::exit(1);
        }
    };

    println!("Result: {}", result);
}
  1. 解析命令行参数:使用env::args()收集命令行参数,并检查参数数量是否足够。
  2. 提取操作模式和操作数:通过遍历参数,匹配特定的参数名(如--operation--operand1--operand2),并提取对应的值。
  3. 参数校验:对操作数进行解析,确保其为有效的数字。如果参数无效,输出错误信息并退出程序。
  4. 执行操作并输出结果:根据操作模式(addsubtract等)执行相应的运算,并将结果输出到控制台。如果操作模式不支持,同样输出错误信息并退出程序。