blob: 5e87aee4fbf19a12407c0a7352018333a2c29dd4 [file] [edit]
#![warn(clippy::manual_bit_width)]
use core::num::{self, NonZero, NonZeroI32, NonZeroU32};
fn main() {
// `T::BITS - x.leading_zeros()`
// unsigned
let w: u8 = 5;
let _ = w.bit_width(); //~ manual_bit_width
let w: u16 = 5;
let _ = w.bit_width(); //~ manual_bit_width
let w: u32 = 5;
let _ = w.bit_width(); //~ manual_bit_width
let w: u64 = 5;
let _ = w.bit_width(); //~ manual_bit_width
let w: usize = 5;
let _ = w.bit_width(); //~ manual_bit_width
// signed
let x: i8 = -5;
let _ = x.cast_unsigned().bit_width(); //~ manual_bit_width
let x: i16 = -5;
let _ = x.cast_unsigned().bit_width(); //~ manual_bit_width
let x: i32 = -5;
let _ = x.cast_unsigned().bit_width(); //~ manual_bit_width
let x: i64 = -5;
let _ = x.cast_unsigned().bit_width(); //~ manual_bit_width
let x: isize = -5;
let _ = x.cast_unsigned().bit_width(); //~ manual_bit_width
// `NonZero::<T>::BITS - x.leading_zeros()`
// unsigned
let y = NonZero::<u8>::new(5).unwrap();
let _ = y.bit_width().get(); //~ manual_bit_width
let y = NonZero::<u16>::new(5).unwrap();
let _ = y.bit_width().get(); //~ manual_bit_width
let y = NonZero::<u32>::new(5).unwrap();
let _ = y.bit_width().get(); //~ manual_bit_width
let y = NonZero::<u64>::new(5).unwrap();
let _ = y.bit_width().get(); //~ manual_bit_width
let y = NonZero::<usize>::new(5).unwrap();
let _ = y.bit_width().get(); //~ manual_bit_width
// signed
let z = NonZero::<i8>::new(-5).unwrap();
let _ = z.cast_unsigned().bit_width().get(); //~ manual_bit_width
let z = NonZero::<i16>::new(-5).unwrap();
let _ = z.cast_unsigned().bit_width().get(); //~ manual_bit_width
let z = NonZero::<i32>::new(-5).unwrap();
let _ = z.cast_unsigned().bit_width().get(); //~ manual_bit_width
let z = NonZero::<i64>::new(-5).unwrap();
let _ = z.cast_unsigned().bit_width().get(); //~ manual_bit_width
let z = NonZero::<isize>::new(-5).unwrap();
let _ = z.cast_unsigned().bit_width().get(); //~ manual_bit_width
// negative cases.
// left expression is a literal
let z: u32 = 1_000_000 - x.leading_zeros();
}