gpt4 book ai didi

rust - 为什么 while 不是 Rust 中的表达式

转载 作者:行者123 更新时间:2023-12-03 11:27:24 25 4
gpt4 key购买 nike

我是 Rust 的新手。在我看来,loopwhile 之间的主要区别在于 loop 是一个返回值的表达式。但是为什么 while 不能是一个表达式呢?这样的代码不会编译:

fn main() {
let mut count = 0;
let x = while count != 2 {
count += 1;
count
};
println!("{}", x);
}

但也许编译器可以像这样解释 while block :

let x = {
count += 1; // 1st iteration
count += 1; // 2nd iteration
count
};

我知道这在语义上看起来很奇怪。但这是loop存在的唯一原因吗?

我知道 while true 是不允许的,但您始终可以这样做

let x = 10;
while x != 11 {
println!("test");
}

其行为与 while true 完全相同。

最佳答案

But why can't while be an expression?

对此进行了很多讨论,并且至少有一个 RFC。有很多细节需要解决。比如第一次while没有进入body怎么办?

But is this the only reason that loop exist?

第一个是最合理的。 loop 也不总是一个表达式!

I'm aware that while true is not allowd

虽然相关警告默认开启,但允许。

关于rust - 为什么 while 不是 Rust 中的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63311366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com