【发布时间】:2021-08-15 18:25:26
【问题描述】:
我了解 Rust 中表达式和语句的概念,但是《The Rust Programming Language》一书中的一段代码让我很困惑。
代码如下:
fn main() {
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
println!("The result is {}", result);
}
result 被分配了一个表达式(否则代码将无法工作)但counter * 2 之后的分号让我认为这是一个语句。
作者在别处写道
表达式不包括结束分号。如果添加分号 到表达式的结尾,你把它变成一个语句,这将 然后不返回值
有人可以帮我澄清一下吗?
【问题讨论】:
-
break X后面的分号不会改变loop表达式的类型,因为循环被定义为将类型传递给break,即X的类型。 (return X之后的分号也是如此。) -
loop和break很特别,如果你不明白,你可能不需要担心这个。
标签: rust