解析Rust中的命令行参数



我正在处理一个需要解析cli参数的命令行程序。我的问题是,有一个错误,当我试图从字符串的向量解析元素

我有一个叫做ìnto_num_vec()的函数,它接受一个字符串向量,我应该把它解析成一个新的整数向量。

代码来自lib.rs

pub fn affirm_args(input: Vec<String>) {
if input.len() < 2 {
panic!("To few arguments");
} else {
let numbers = into_num_vec(input);
print_numbers(numbers);
}
}

fn into_num_vec(input: Vec<String>) -> Vec<i32> {
let mut collection: Vec<i32> = Vec::new();
for i in input {
match i.trim().parse() {
Ok(n) => collection.push(n),
Err(_) => panic!("Error parsing")
}
}
collection
}
pub fn print_numbers(input: Vec<i32>) {
for i in input {
println!("{}", i);
}
}

函数正在恐慌,我正在收到自定义恐慌消息"解析错误"。

main.rs中的代码

use sort_program::*;
use std::env;
fn main() {
let args: Vec<String> = env::args().collect();
affirm_args(args); 
}

程序的第一个参数通常是可执行文件名。你应该跳过它:

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

最新更新