Merge .map().filter() into .filter_map()

This commit is contained in:
Christopher Berner 2021-02-03 20:35:17 -08:00
parent a1d5894e25
commit 5e506b5b78

@ -756,26 +756,23 @@ impl<T: BinaryMatrix> IntermediateSymbolDecoder<T> {
let mut row_ops: Vec<RowOp> = row_ops
.iter()
.rev()
.map(|x| match x {
.filter_map(|x| match x {
RowOp::AddAssign { src, dest } => {
assert!(mapping[*src] < self.i);
RowOp::AddAssign {
src: mapping[*src],
dest: mapping[*dest],
if mapping[*src] < self.i && mapping[*dest] < self.i {
Some(RowOp::AddAssign {
src: mapping[*src],
dest: mapping[*dest],
})
} else {
None
}
}
RowOp::Swap { row1, row2 } => {
mapping.swap(*row1, *row2);
RowOp::Swap {
row1: *row1,
row2: *row2,
}
None
}
})
.filter(|x| match x {
RowOp::AddAssign { src, dest } => *src < self.i && *dest < self.i,
RowOp::Swap { .. } => false,
})
.collect();
row_ops.reverse();
return Some(row_ops);