分号是语句结束,未带分号则表示返回,if可以携带返回值,match就是switch,_ =>相当于default
let x = if bool {3} else {4};
println!("{}", x);
match匹配Option:
fn main() {
let mut params = HashMap::new();
params.insert("name", "Alice");
match params.get("name") {
Some(name) => println!("Hello, {}", name),
None => print!("Greetings, stranger.")
}
}
因为map的get就是返回Option。for循环会转移所有权,所以一定要注意:for str in &strings。
循环也可以带返回值
use std::collections::HashMap;
fn main() {
let mut params = HashMap::new();
params.insert("name", "aare123");
let answer = loop {
if let Some(name) = params.get("name") {
if name.starts_with("aare") {
break "good";
}
} else {
break "not good";
}
};
println!("answer {}", answer);
}
if let Some(name) = params.get("name"):
这部分代码检查 params.get("name") 是否返回 Some 变体。
如果返回 Some,则将内部的值绑定到 name 变量,并执行代码块中的内容。
如果返回 None,则 if let 的条件为假,跳到 else 分支。
continue会跳出本次循环。
在rust中,.运算符会根据需要自动对player解引用或者借入一个对它的引用。只有想要读取或者写入引用所指的整个????️时才需要用*运算符。
对于整数 n,不能用 !n 来表示“n 为 0”,而是应该写成 n == 0。按位取飞!
除0也不会发生panic的方法:checked_div(b)