[英]Why is in Rust the expression in Option.and evaluated, if option is None?
[英]Why is while not an expression in Rust
我是 Rust 的新手。 在我看来, loop
和while
之间的主要区别在于loop
是一个返回值的表达式。 但是为什么while
不能是一个表达式呢? 像这样的代码不会编译:
fn main() {
let mut count = 0;
let x = while count != 2 {
count += 1;
count
};
println!("{}", x);
}
但也许编译器可以像这样解释while
块:
let x = {
count += 1; // 1st iteration
count += 1; // 2nd iteration
count
};
我知道这在语义上看起来很奇怪。 但这是loop
存在的唯一原因吗?
我知道while true
是不允许的,但你总是可以这样做
let x = 10;
while x != 11 {
println!("test");
}
其行为与while true
完全一样。
但是为什么while不能是一个表达式呢?
已经有很多关于这个的讨论,并且至少有一个 RFC。 有很多细节需要解决。 比如第一次有一段while
没有进入身体怎么办?
但这是循环存在的唯一原因吗?
这是最合理的第一个。 loop
也不总是一个表达式!
我知道虽然 true 是不允许的
尽管默认情况下启用了相关警告,但它是允许的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.