Rust-语句和表达式

if-else

Rust中if-else表达式的作用是实现条件分支。if-else表达式的构成方式为:以if关键字开头,后面跟上条件表达式,后续是结果语句块,最后是可选的else块。条件表达式的类型必须是bool。

Rust-语句和表达式_第1张图片

if-else结构还可以当表达式使用

在这里插入图片描述

loop

在Rust中,使用loop表示一个无限死循环。示例如下:

Rust-语句和表达式_第2张图片
我们可以在loop while for循环前面加上“生命周期标识符”。该标识符以单引号开头,在内部的循环中可以使用break语句选择跳出到哪一层。

Rust-语句和表达式_第3张图片
在loop内部break的后面可以跟一个表达式,这个表达式就是最终的loop表达式的值。

Rust-语句和表达式_第4张图片

如果一个loop永远不返回,那么它的类型就是“发散类型”。
在这里插入图片描述

while

while语句是带条件判断的循环语句。其语法是while关键字后跟条件判断语句,最后是结果语句块。如果条件满足,则持续循环执行结果语句块。
Rust-语句和表达式_第5张图片
看到这里,可能会产生疑惑:loop {}和while true {}循环有什么区别,为什么 Rust专门设计了一个死循环,loop语句难道不是完全多余的吗?

实际上不是。主要原因在于,相比于其他的许多语言,Rust语言要做更多的静态分析。loop和while true语句在运行时没有什么区别,它们主要是会影响编译器内部的静态分析结果。比如:

在这里插入图片描述
以上语句在Rust中完全合理。因为编译器可以通过流程分析推理出x=1;必然在println!之前执行过,因此打印变量x的值是完全合理的。而下面的代码是编译不过的:

在这里插入图片描述
因为编译器会觉得while语句的执行跟条件表达式在运行阶段的值有关,因此它不确定x是否一定会初始化,于是它决定给出一个错误:use of possibly uninitialized variable,也就是说变量x可能没有初始化。

for循环

Rust中的for循环实际上是许多其他语言中的for-each循环。Rust中没有类似C/C++的三段式for循环语句。举例如下:

Rust-语句和表达式_第6张图片

你可能感兴趣的:(Rust,rust,开发语言,后端)