zoukankan      html  css  js  c++  java
  • 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位整型值。

  • 相关阅读:
    存在主义危机
    噪声干扰
    Jupiter 2 Modem State Codes
    广域网优化协议欺骗
    RF / IF 信号
    意识清晰九度
    m3u8downloader
    JS禁用浏览器退格键
    Ruby on rails开发从头来(五十一) ActiveRecord基础(并发处理)
    来自Rails世界的项目管理工具Redmine
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7308777.html
Copyright © 2011-2022 走看看