diff options
author | Andre Bogus <bogusandre@gmail.com> | 2018-08-13 23:17:45 +0200 |
---|---|---|
committer | Andre Bogus <bogusandre@gmail.com> | 2018-08-15 13:54:47 +0200 |
commit | 4cae6650fd9f25c4fb1338c896783193392be1af (patch) | |
tree | c933b4557c6144e2366d1171c6b1aab67267d13f /src/librustc_apfloat | |
parent | 81cfaad030435aae447d73c66123b3df856c09cb (diff) | |
download | rust-4cae6650fd9f25c4fb1338c896783193392be1af.tar.gz |
Two small improvements
In `librustc_apfloat/ieee.rs`, use the iterator.[r]find methods to
simplify the code. In `libserialize/json.rs`, make use of the fact
that `Vec.last` on an empty `Vec` returns `None` to simplify the
code to a single match.
Diffstat (limited to 'src/librustc_apfloat')
-rw-r--r-- | src/librustc_apfloat/ieee.rs | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/src/librustc_apfloat/ieee.rs b/src/librustc_apfloat/ieee.rs index 45279f18117..87d59d2e763 100644 --- a/src/librustc_apfloat/ieee.rs +++ b/src/librustc_apfloat/ieee.rs @@ -2306,24 +2306,14 @@ mod sig { /// One, not zero, based LSB. That is, returns 0 for a zeroed significand. pub(super) fn olsb(limbs: &[Limb]) -> usize { - for (i, &limb) in limbs.iter().enumerate() { - if limb != 0 { - return i * LIMB_BITS + limb.trailing_zeros() as usize + 1; - } - } - - 0 + limbs.iter().enumerate().find(|(_, &limb)| limb != 0).map_or(0, + |(i, limb)| i * LIMB_BITS + limb.trailing_zeros() as usize + 1) } /// One, not zero, based MSB. That is, returns 0 for a zeroed significand. pub(super) fn omsb(limbs: &[Limb]) -> usize { - for (i, &limb) in limbs.iter().enumerate().rev() { - if limb != 0 { - return (i + 1) * LIMB_BITS - limb.leading_zeros() as usize; - } - } - - 0 + limbs.iter().enumerate().rfind(|(_, &limb)| limb != 0).map_or(0, + |(i, limb)| (i + 1) * LIMB_BITS - limb.leading_zeros() as usize) } /// Comparison (unsigned) of two significands. |