Rust 1.7.0 处理命令行參数

Posted jhcelue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rust 1.7.0 处理命令行參数相关的知识,希望对你有一定的参考价值。

std是 Rust 标准函数库;
env 模块提供了处理环境函数。
在使用标准函数库的时候,使用 use 导入对应的 module 。

一、直接输出

use std::env;

fn main(){
    for argument in env::args() {
        println!("*** args = {}", argument);
    }
}
$cargo run  12 and 78
     Running `target/debug/attribute_test 12 and 78`
*** args = target/debug/attribute_test
*** args = 12
*** args = and
*** args = 78

二、存储并输出

改动:

$vi src/main.rs

代码:

use std::env;
fn main(){

    let mut arguments = Vec::new();

    for argument in env::args() {
        arguments.push(argument);
    }

    for a in arguments{
        println!("*** argument = {}", a);
    }
}

Vec 是一个可增长的list数据类型,提供push 和pop 数据操作。
通过 arguments.push( ) 操作将命令行參数保存到 arguments中。

$cargo run  12 and 78
     Running `target/debug/attribute_test 12 and 78`
*** args = target/debug/attribute_test
*** args = 12
*** args = and
*** args = 78

三、计算

改动:

$vi src/main.rs

代码:

use std::env;
use std::str::FromStr;

fn main(){

    let mut arguments = Vec::new();

    for argument in env::args() {
        arguments.push(argument);
    }

    let first:i32 = i32::from_str(&arguments[1]).expect("error parsing argument");
    let second:i32 = i32::from_str(&arguments[2]).expect("error parsing argument");
    let result = add(first,second);
    println!("*** value = {}",result);
}

fn add(x:i32,y:i32)-> i32{
  return x+y;
}

#[test]
fn test_add(){
  assert_eq!(add(3,4),7);
}

执行測试:

$cargo test
     Running target/debug/attribute_test-431700a6ad4b39fd

running 1 test
test test_add ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured

执行:

$cargo run 12 34
     Running `target/debug/attribute_test 12 34`
*** value = 46

解释一下:
* 从命令行获取的參数都是 string 类型。
* arguments中的第一个值是当前程序的名称。因此计算參数从arguments[1]和arguments[2]取;
* 在參数相加之前。使用 from_str 将字符转换为32位整型;
* 使用 use std::str::FromStr 引入 from_str 功能函数;
* from_str 返回的值是一个 Result 值,代表转换是否成功。通过Result的 expect 功能函数能够在出现错误的时候提示;假设没有错误返回正确的32位整型值。

以上是关于Rust 1.7.0 处理命令行參数的主要内容,如果未能解决你的问题,请参考以下文章

PythonPython获取命令行參数

python 命令行參数解析

进程状态与环境变量的解析

bash仅仅读的环境变量

Rust 1.7.0 语法基础 sep_token 和 non_special_token

Qt:解析命令行