rust学习笔记第一篇
rust导览
- 包管理工具: cargo
- rust管理工具: rustup
一个代码示例及其注释:
use std::str::FromStr;
use std::env;
// 函数定义规则
//类似于go rust的签名类型标记是后置的
fn gcd(mut n: u64, mut m: u64) -> u64 {
//循环语法 类似go while里的判断条件不需要用括号包裹
while m != 0 {
//if 判断语法 同样不需要括号包裹
if m < n {
//变量定义 不需要进行类型约束 因为rust会自动推断
let t = m;
m = n;
n = t;
}
m = m % n;
}
//当在程序末尾用不带分号的形式返回变量,代表程序的返回
// rust鼓励这种形式作为程序的返回结果,以提高程序的可读性
n
}
fn main() {
//声明基本容器 同样不需要类型约束 rust会自动推断
let mut nums = Vec::new();
for arg in env::args().skip(1) {
//u64
nums.push(u64::from_str(&arg)
.expect("error happens"))
}
if nums.len() == 0 {
println!("uage input some number and eval their gcd");
std::process::exit(1);
}
let mut d = nums[0];
for m in &nums[1..] {
d = gcd(d,*m)
}
//println!输出 函数名带有!说明是宏
println!("gcd is {}",d);
}