为啥 Rust 的示例猜谜游戏允许具有不同返回类型的 match 语句?
Posted
技术标签:
【中文标题】为啥 Rust 的示例猜谜游戏允许具有不同返回类型的 match 语句?【英文标题】:Why does Rust's example guessing game allow a match statement with varying return types?为什么 Rust 的示例猜谜游戏允许具有不同返回类型的 match 语句? 【发布时间】:2020-09-12 18:36:52 【问题描述】:查看the intro book 的猜谜游戏示例,特别是使用match
语句执行错误处理的部分:
let guess: u32 = match guess.trim().parse()
Ok(num) => num,
Err(_) => continue,
;
为什么不抱怨match
语句的不同分支具有不同的返回类型?一个返回u32
,另一个执行continue
语句并且不返回任何内容。我认为要么match
语句的所有分支都必须执行代码,要么所有分支都必须返回彼此相同类型的东西。
【问题讨论】:
Ok 表示成功,并将值携带到参数中,然后返回到变量,因为 Err 携带正在处理的错误并执行提供的异常,因此继续。 本书解释它later。 【参考方案1】:continue
的类型为 !
(AKA "never")、which can coerce into any other type,因为它不能存在任何值。
【讨论】:
以上是关于为啥 Rust 的示例猜谜游戏允许具有不同返回类型的 match 语句?的主要内容,如果未能解决你的问题,请参考以下文章