From fa6e3b49bf74dbfb18c7ac1996c8c054c5673f10 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Tue, 19 Feb 2013 21:18:19 -0500 Subject: [PATCH] replace explicit loops with foldr --- src/librustc/middle/trans/_match.rs | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/librustc/middle/trans/_match.rs b/src/librustc/middle/trans/_match.rs index 46aed07c66dc..8085e4a66e16 100644 --- a/src/librustc/middle/trans/_match.rs +++ b/src/librustc/middle/trans/_match.rs @@ -1369,19 +1369,14 @@ pub fn compile_submatch(bcx: block, PointerCast(bcx, val, T_opaque_enum_ptr(ccx)); let discrimptr = GEPi(bcx, enumptr, [0u, 0u]); - let mut min_discrim = variants[0].disr_val; - for uint::range(1, variants.len()) |idx| { - if variants[idx].disr_val < min_discrim { - min_discrim = variants[idx].disr_val; - } - } - let mut max_discrim = variants[0].disr_val; - for uint::range(1, variants.len()) |idx| { - if variants[idx].disr_val > max_discrim { - max_discrim = variants[idx].disr_val; - } - } + assert variants.len() > 1; + let min_discrim = do variants.foldr(0) |&x, y| { + int::min(x.disr_val, y) + }; + let max_discrim = do variants.foldr(0) |&x, y| { + int::max(x.disr_val, y) + }; test_val = LoadRangeAssert(bcx, discrimptr, min_discrim as c_ulonglong,