From 476ddfa01a7366358a257e23a18fe402c98f900f Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Tue, 19 Jun 2018 13:05:42 +0200 Subject: openpgp: Express log2 using the `u32::leading_zeros()` intrinsic. --- openpgp/src/serialize/partial_body.rs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'openpgp/src/serialize/partial_body.rs') diff --git a/openpgp/src/serialize/partial_body.rs b/openpgp/src/serialize/partial_body.rs index 0d1ba87a..a1df796a 100644 --- a/openpgp/src/serialize/partial_body.rs +++ b/openpgp/src/serialize/partial_body.rs @@ -13,15 +13,12 @@ use super::{writer, write_byte, Serialize}; // Compute the log2 of an integer. (This is simply the most // significant bit.) Note: log2(0) = -Inf, but this function returns // log2(0) as 0 (which is the closest number that we can represent). -fn log2(mut x: u32) -> usize { - for i in 0..32 { - x /= 2; - if x == 0 { - return i; - } +fn log2(x: u32) -> usize { + if x == 0 { + 0 + } else { + 31 - x.leading_zeros() as usize } - - return 31; } #[test] -- cgit v1.2.3