当类型判断表情匹配
e_s { a_1 => e_1, ... a_n => e_n }
时,对于包含形式p_i | q_i
的图案的每个匹配臂a_i
,如果在其存在深度d
处的e_s
的片段的深度d
处,表情片段的类型与p_i | q_i
不一致,则图案p_i | q_i
被认为是病态的.
资料来源:https://doc.rust-lang.org/stable/reference/patterns.html#or-patterns
我试图为这种不规范的情况创造一个例子,我的方法是这样的
fn main() {
let v = 10;
match v {
1 | 2 => 2.0,
3 | 4 => 4.0,
5 | 6 => 6.0,
_ => 0.0,
};
}
但这是正确的,为什么不是呢?我可能就是不明白.为什么手臂或模式类型应该与表达式类型统一?或者他们所说的统一到底是什么意思?
什么是正确的例子来证明上述规则的有效性?