summaryrefslogtreecommitdiff
path: root/src/librustc_apfloat
diff options
context:
space:
mode:
authorAndre Bogus <bogusandre@gmail.com>2018-08-13 23:17:45 +0200
committerAndre Bogus <bogusandre@gmail.com>2018-08-15 13:54:47 +0200
commit4cae6650fd9f25c4fb1338c896783193392be1af (patch)
treec933b4557c6144e2366d1171c6b1aab67267d13f /src/librustc_apfloat
parent81cfaad030435aae447d73c66123b3df856c09cb (diff)
downloadrust-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.rs18
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.