繁体   English   中英

为什么虽然不是 Rust 中的表达式

[英]Why is while not an expression in Rust

我是 Rust 的新手。 在我看来, loopwhile之间的主要区别在于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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM