Skip to content

Commit 909ec37

Browse files
committed
Simpler code path for subtracting from FixedLenSlice
1 parent e092a17 commit 909ec37

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/librustc_mir/hair/pattern/_match.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,15 @@ impl<'tcx> Constructor<'tcx> {
672672
vec![self.clone()]
673673
}
674674
}
675-
FixedLenSlice(_) | VarLenSlice(_) => {
675+
FixedLenSlice(self_len) => {
676+
let overlaps = |c: &Constructor<'_>| match c {
677+
FixedLenSlice(other_len) => other_len == self_len,
678+
VarLenSlice(other_len) => other_len <= self_len,
679+
_ => false,
680+
};
681+
if other_ctors.iter().any(overlaps) { vec![] } else { vec![self.clone()] }
682+
}
683+
VarLenSlice(_) => {
676684
let mut remaining_ctors = if let VarLenSlice(len) = self {
677685
(*len..pcx.max_slice_length + 1).map(FixedLenSlice).collect()
678686
} else {

0 commit comments

Comments
 (0)