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位整型值。

时间: 2024-07-30 13:49:03

Rust 1.7.0 处理命令行參数的相关文章

命令行參数选项处理:getopt()及getopt_long()函数使用

在执行某个程序的时候,我们通常使用命令行參数来进行配置其行为.命令行选项和參数控制 UNIX 程序,告知它们怎样动作. 当 gcc的程序启动代码调用我们的入口函数 main(int argc,char *argv[]) 时,已经对命令行进行了处理.argc 參数包括程序參数的个数,而 argv 包括指向这些參数的指针数组. 程序的參数能够分为三种:选项.选项的关联值,非选项參数. 比如: $gcc getopt_test.c -o testopt getopt_test.c是非选项參数.-o是选

第8章2节《MonkeyRunner源代码剖析》MonkeyRunner启动执行过程-解析处理命令行參数

MonkeyRunnerStarter是MonkeyRunner启动时的入口类,由于它里面包括了main方法.它的整个启动过程主要做了以下几件事情: 解析用户启动MonkeyRunner时从命令行传输进来的參数: 由于MonkeyRunner须要依据指定的參数才干做事情,比方输入的一个须要执行的脚本. 假设确实不知道不论什么參数的话它就会进入MonkeyRunner的交互模式,事实上就是Jythong的交互模式,让用户能够边写代码边执行 启动AndroidDebugBridge: 事实上就是启动

python 命令行參数解析

本文是从我还有一个博客转载过来的,欢迎大家点击进去看一下,帮我添加点人气^_^ ImPyy 选择模块 依据python參考手冊的提示,optparse 已经废弃,应使用 argparse 教程 概念 argparse 模块使用 add_argument 来加入可选的命令行參数,原型例如以下: ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][

Go語言系統編程如何取得命令行參數或系統環境變量

首先取得命令行參數: 用法如下: [email protected]:~/code/go/self$ ./sum 1 2 4 package main import "fmt" import "os" import "strconv" func main() int{ arg_num := len(os.Args) fmt.Printf("the num of input is %d\n",arg_num) fmt.Print

Python命令行选项參数解析策略

概述 在Python的项目开发过程中,我们有时须要为程序提供一些能够通过命令行进行调用的接口.只是,并非直接使用 command + 当前文件 就ok的,我们须要对其设置可选的各种各样的操作类型.所以,这样的情况下我们就有必要对传入的參数进行解析操作. 以下就此问题提出几种不同的解决策略.希望于你故意. 版权说明 著作权归作者全部. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:Coding-Naga 发表日期: 2016年3月18日 链接:http://blog.csdn.net/

grep命令參数及使用方法

功能说明:查找文件中符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或文件夹...] 补充说明:grep 指令用于查找内容包括指定的范本样式的文件,假设发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来.若不指定

Qt:解析命令行

Qt从5.2版開始提供了两个类QCommandLineOption和QCommandLineParser来解析应用的命令行參数. 一.命令行写法 命令行:"-abc" 在QCommandLineParser的解析模式为ParseAsCompactedShortOptions(默认)时会被觉得是3个參数,即"-a"."-b"和"-c" QCommandLineOption op1("a"); QCommand

【JAVA学习】“-Xmx1024m -Xms1024m -Xmn512m -Xss256k”——Java执行參数(转)

年轻代 年老代概念 http://jefferent.iteye.com/blog/1123677 JVM的堆的内存, 是通过以下面两个參数控制的 -Xms 最小堆的大小, 也就是当你的虚拟机启动后, 就会分配这么大的堆内存给你 -Xmx 是最大堆的大小 当最小堆占满后,会尝试进行GC,假设GC之后还不能得到足够的内存(GC未必会收集到全部当前可用内存),分配新的对象,那么就会扩展堆,假设-Xmx设置的太小,扩展堆就会失败,导致OutOfMemoryError错误提示. 实际上,细节不止于此, 

kettle參数、变量具体解说

kettle參数.变量具体解说 kettle 3.2 曾经的版本号里仅仅有 variable 和 argument,kettle 3.2 中.又引入了 parameter 概念.variable 即environment variables(环境变量或全局变量).即使是不同的转换它们也拥有相同的值:而argument(位置參数)和parameter(命名參数),能够映射为局部变量,仅仅针对一个特定的转换,比方像是限定结果集的大小和过滤条件. 1.     variable(变量) variabl