满足指定条件执行某个功能
三种条件判断
if conditional_test {
// true执行
}
Rust不会自动将非布尔值转换为布尔值,必须显示使用布尔值作为表达式的值
if conditional_test {
// true执行
}else{
// false 执行
}
if conditional_test_1 {
}else if conditional_test_2{
}else{
}
在满足指定条件的情况下,重复执行一段代码
三种循环
没有循环条件,无限次重复执行一段代码,直到调用break 退出循环
break : 循环控制语句,退出循环并将返回值返回
let mut count = 0;
let counter = loop{
count += 1;
let num = count *2;
if count == 10 {
break num; // 返回num的值
}
};
while循环在每次执行代码前进行条件判断,只要条件表达式的值为true就会重复执行代码。
let mut count = 0;
let mut counter = 0;
while count != 10 {
count += 1;
counter = count *2;
}
for循环使用for … in … 语法格式,重复执行指定次数的循环。
因其安全性和简洁性,常用于对范围类型或者集合类型的所有元素执行指定的操作
let mut counter = 0;
for count in 1..=10 {
counter = count *2;
}
continue 和 break都是用于循环控制的语句。
for i in 0..10 {
for i== 0 || i == 4 {
continue;
}
if i== 6 {
break;
}
}
检查当前值是否匹配一系列模式中的某一个。
模式可以由字面量、变量、通配符和其他内容构成。
每一个模式都是一个分支,程序根据匹配的模式执行相应的代码。
Rust 要求match模式匹配是穷尽式的,即必须穷举所有的可能,否则会导致程序错误。
通配符"_"会匹配没有指定的所有可能的模式。
let age = 6;
match age{
0 => println!("0"),
1..=2 => println!("1..2"),
_ => (),
}
在某些场景中可以替代match模式匹配来简化代码
可以将if let 视为match的语法糖,仅当匹配某一模式时执行代码,并忽略其他所有模式
match value{
Some(7) => println!("seven"),
_ => (),
}
使用if let 可以简化
if let Some(7) = value {
println!("seven");
}
while let 后紧跟的表达式中,左侧为匹配模式,右侧为要匹配的值,两者通过=分隔。
let mut vec = vec![1,2,3,4];
loop{
match vec.pop(){
Some(value) => println!("{}",value),
None => break,
}
}
let mut vec = vec![1,2,3,4];
while let Some(value) = vec.pop(){
println!("{}",value);
}