жӣҙж–°пјҡиҝҷжҳҜдёҖдёӘж—§зҡ„жјҸжҙһпјҢе·ІеңЁ1.12дёӯи§ЈеҶі
иҝҷйҮҢжңүдёҖдёӘдәәдёәеҲ¶йҖ зҡ„дҪҶз®ҖеҚ•зҡ„жЁЎејҸеҢ№й…ҚзӨәдҫӢпјҲжј”зӨәпјүпјҡ
fn main() {
let x = 'a';
match x {
'a'...'b' if false => {
println!("one");
},
'a' => {
println!("two");
},
'a'...'b' => {
println!("three");
},
_ => panic!("what?")
}
}
当我运行它时,输出结果是three
。为什么会这样?第二个分支不应该先匹配吗?
...
的匹配分支,它都会匹配到"two",即使你在"two"之后注释掉了该匹配分支。这只是纯粹的猜测,我想知道是否存在某些不正确的优化,将两个范围合并在一起,并使它们首先触发。如果你将第一个范围更改为'a'...'c'
,那么"two"也会匹配上... - Shepmaster