博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rust 1.7.0 处理命令行參数
阅读量:7081 次
发布时间:2019-06-28

本文共 1803 字,大约阅读时间需要 6 分钟。

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-431700a6ad4b39fdrunning 1 testtest test_add ... oktest 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位整型值。

转载地址:http://islml.baihongyu.com/

你可能感兴趣的文章
Eclipse之调试代码和返回
查看>>
VIM键盘映射 (Map)~转载
查看>>
移动端缩放设置
查看>>
GCC编译动态和静态链接库例子
查看>>
道格拉斯-普克抽稀算法《转》
查看>>
BZOJ 1002 轮状病毒 矩阵树定理
查看>>
python之paramiko 远程执行命令
查看>>
materialized view 和snapshot
查看>>
PHP使用数据库的并发问题(转)
查看>>
关于tcc、tlink的编译链接机制的研究
查看>>
Tomcat 安装与配置规范
查看>>
[LeetCode] Fraction to Recurring Decimal
查看>>
GROUP BY语句与HAVING语句的使用
查看>>
SMG12232A2标准图形点阵型液晶显示模块的演示程序[C51编程语言]
查看>>
RABBITMQ队列
查看>>
Struts2的简单的文件上传
查看>>
如何将hdf5文件转换成tflite文件
查看>>
Redis windows 2.6版本并发出错解决方法
查看>>
html
查看>>
-L、-rpath和-rpath-link的区别
查看>>