为什么Rust的示例猜测游戏允许匹配语句具有不同的返回类型?

问题描述

看看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,因为它的值不能存在。