Rust 程序是从上而下顺序执行的,在此过程中,我们可以通过循环、分支等流程控制方式,更好的实现相应的功能。
根据条件是否为真来决定是否执行某些代码,以及根据条件是否为真来重复运行一段代码的能力是大部分编程语言的基本组成部分。Rust 代码中最常见的用来控制程序进行条件执行结构的是 if 表达式和循环。
(一)if表达式
if 表达式允许根据条件执行不同的代码分支。你提供一个条件并表示“如果条件满足,运行这段代码;如果条件不满足,不运行这段代码。”
当然,也可以包含一个可选的 else 表达式来提供一个在条件不满足时需要执行的代码块,如果不提供 else 表达式,那么在条件不满足时,程序则会直接忽略 if 代码块并继续向下执行。
fn main() {
let number = 3;
if number < 5 {
println!("condition was true");
} else {
println!("condition was false");
}
}
值得注意的是,代码中的条件 必须 是 bool 值。如果条件不是 bool 值,程序就会错误。
例如以下代码,类似的写法可能在别的编程语言中可以顺利执行,但Rust却会报错:
fn main() {
let number = 3;
if number {
println!("number was three");
}
}
//编译结果:期待的是一个布尔值,但现在却是个数值。
//if number {
// ^^^^^^ expected `bool`, found integer
可以很明显看出,Rust 并不会自动地将非布尔值转换为布尔值,必须总是显式地使用布尔值作为 if 的条件。
如果想要 if 代码块只在一个数字不等于 0 时执行,可以把 if 表达式修改成下面这样:
fn main() {
let number = 3;
if number != 0 {