我有这些变量,我想计算c
中s
出现的次数。
let c = 2;
let s = vec![1, 2, 5, 2, 4, 2, 7];
使用if
表达式的闭包进行折叠编译并正常工作:
let r1 = s.iter().fold(0, |a, &x| a + if x == c { 1 } else { 0 });
但是,如果我想使用match
之类的
let r2 = s.iter().fold(0, |a, &x| a + match x { c => 1, _ => 0 });
编译器抱怨无法访问的模式错误消息:
22 | let r2 = s.iter().fold(0, |a, &x| a + match x { c => 1, _ => 0 });
| ^ this is an unreachable pattern
这样做真的不可能吗?