gpt4 book ai didi

types - 为什么匹配臂中的 `continue` 不必进行类型检查?

转载 作者:行者123 更新时间:2023-11-29 07:52:37 25 4
gpt4 key购买 nike

Rust's guessing game tutorial具有以下示例代码:

let guess: u32 = match guess.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};

匹配的结果应该是u32,在Ok(num) 分支中就是这种情况。但是,Err(_) 分支返回continue,这肯定不是u32。为什么这种类型检查和工作?

最佳答案

However, the Err(_) branch returns continue

不是真的。 continue 不是“返回”的东西,而是改变代码流的东西。由于匹配臂不产生值,因此它的类型无关紧要。 match 作为一个整体进行类型检查 - 每个结果值 都是一个 u32

您还可以使用其他控制流关键字,例如 returnbreak

类似的概念是 divergent functions .这些函数保证永不返回,因此可以用它们代替任何表达式。

这还允许您使用像 panic!("...")unimplemented!() 这样的宏作为匹配臂,因为它们扩展到一个发散的功能。

关于types - 为什么匹配臂中的 `continue` 不必进行类型检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42940812/

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