Обновление: это старая ошибка решена в 1.12
Вот несколько надуманных, но простых примеров соответствия шаблону (demo):
fn main() {
let x = 'a';
match x {
'a'...'b' if false => {
println!("one");
},
'a' => {
println!("two");
},
'a'...'b' => {
println!("three");
},
_ => panic!("what?")
}
}
Когда я запускаю его, я получаю three
как вывод. Почему это происходит? Не должна ли первая ветвь первой совпадать?