问题描述
看看the intro book中的猜谜游戏示例,特别是使用match
语句执行错误处理的部分:
let guess: u32 = match guess.trim().parse() {
Ok(num) => num,Err(_) => continue,};
为什么不抱怨match
语句的不同分支具有不同的返回类型?一个返回u32
,另一个执行continue
语句,不返回任何内容。我认为match
语句的所有分支都必须执行代码,或者所有分支都必须返回彼此相同类型的东西。
解决方法
continue
的类型为!
(AKA "never"),which can coerce into any other type,因为它的值不能存在。