Skip to content

Commit fa6e3b4

Browse files
committed
replace explicit loops with foldr
1 parent 12b43b2 commit fa6e3b4

File tree

1 file changed

+7
-12
lines changed

1 file changed

+7
-12
lines changed

src/librustc/middle/trans/_match.rs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1369,19 +1369,14 @@ pub fn compile_submatch(bcx: block,
13691369
PointerCast(bcx, val, T_opaque_enum_ptr(ccx));
13701370
let discrimptr = GEPi(bcx, enumptr, [0u, 0u]);
13711371
1372-
let mut min_discrim = variants[0].disr_val;
1373-
for uint::range(1, variants.len()) |idx| {
1374-
if variants[idx].disr_val < min_discrim {
1375-
min_discrim = variants[idx].disr_val;
1376-
}
1377-
}
13781372
1379-
let mut max_discrim = variants[0].disr_val;
1380-
for uint::range(1, variants.len()) |idx| {
1381-
if variants[idx].disr_val > max_discrim {
1382-
max_discrim = variants[idx].disr_val;
1383-
}
1384-
}
1373+
assert variants.len() > 1;
1374+
let min_discrim = do variants.foldr(0) |&x, y| {
1375+
int::min(x.disr_val, y)
1376+
};
1377+
let max_discrim = do variants.foldr(0) |&x, y| {
1378+
int::max(x.disr_val, y)
1379+
};
13851380
13861381
test_val = LoadRangeAssert(bcx, discrimptr,
13871382
min_discrim as c_ulonglong,

0 commit comments

Comments
 (0)