Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 65.4MB ·虚拟内存 1300.3MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
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 中的属性是什么?属性(Attribute)是一种通用的自由格式的元数据,Rust 中的属性以 ECMA-335 中的为模型,其语法则来自 ECMA-334(C#)。 1. 属性的用途 属性只能应 ...