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 处理命令行參数的更多相关文章

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

         在执行某个程序的时候,我们通常使用命令行參数来进行配置其行为.命令行选项和參数控制 UNIX 程序,告知它们怎样动作. 当 gcc的程序启动代码调用我们的入口函数 main(int argc ...

  2. VS2010中使用命令行參数

    在Linux下编程习惯了使用命令行參数,故使用VS2010时也尝试了一下. 新建项目,c++编敲代码例如以下: #include<iostream> #include<fstream ...

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

    MonkeyRunnerStarter是MonkeyRunner启动时的入口类,由于它里面包括了main方法.它的整个启动过程主要做了以下几件事情: 解析用户启动MonkeyRunner时从命令行传输 ...

  4. Python命令行參数大全

      -b     :    当转换数组为字符串时提出警告.比方str(bytes_instance), str(bytearray_instance). -B     :    当导入.py[co]文 ...

  5. python 命令行參数解析

    本文是从我还有一个博客转载过来的,欢迎大家点击进去看一下,帮我添加点人气^_^ ImPyy 选择模块 依据python參考手冊的提示,optparse 已经废弃,应使用 argparse 教程 概念 ...

  6. python命令行參数解析实例

    闲言少述,直接上代码 #!/usr/bin/env python # # import json import getopt, sys def usage():     print sys.argv[ ...

  7. Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2. $# 传递给脚本或函数的参数个数. $* 传 ...

  8. 【Shell脚本学习8】Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运 ...

  9. 【转】shell 教程——07 Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运 ...

随机推荐

  1. 微信公众平台——获取access_token、expires_in

    微信公众平台——获取access_token.expires_in 在微信公众平台接口开发中,Access Token占据着重要地位,它相当于进入各种接口的邀请,拿到这个钥匙才拥有调用其他各种特殊接口 ...

  2. s:iterator巧妙控制跳出循环

    <s:set name="index" value="1" /> <s:iterator value="#detail.member ...

  3. Python学习(六)模块 —— 包

    Python 包 包 定义 为了组织好模块,会将多个模块分为包.Python 处理包也是相当方便的.简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件. 常见的包结构如下:

  4. wamp网站Forbidden You don't have permission to access

    Forbidden You don't have permission to access   问题原因:apache的2.4的版本中 Require all denied 应该变成Require a ...

  5. DedeCms V5.6 plus/advancedsearch.php 任意sql语句执行漏洞

    漏洞版本: DedeCms V5.6 漏洞描述: DedeCMS内容管理系统软件采用XML名字空间风格核心模板:模板全部使用文件形式保存,对用户设计模板.网站升级转移均提供很大的便利,健壮的模板标签为 ...

  6. 使用ssh向sqlserver2005数据库中保存image类型的二进制图片

    1.首先设计数据库表,其中photo.photo2字段均为image类型的. 2.建立实体bean对象,设置两个字段为byte[]如:private byte[] photo; private byt ...

  7. 【OpenMesh】Training:Getting Started with OpenMesh

    内容出自236329 - Digital Geometry Processing, Spring2013 - Announcements上的OpenMesh Assignment感觉比较好,适合刚开始 ...

  8. django 实现上传文件功能

    需求:自己写一个文件上传功能 代码: urls.py from django.conf.urls import url from django.contrib import admin from ap ...

  9. 转:mac下安装homebrew

    见: http://brew.sh 在命令行打开:

  10. 【转】 Python 中,matplotlib绘图无法显示中文的问题

    在python中,默认情况下是无法显示中文的,如下代码: import matplotlib.pyplot as plt # 定义文本框和箭头格式 decisionNode = dict(boxsty ...