pub trait BitCountingOps {
fn count_ones(self) -> u32;
fn count_zeros(self) -> u32;
fn leading_zeros(self) -> u32;
fn trailing_zeros(self) -> u32;
fn leading_ones(self) -> u32;
fn trailing_ones(self) -> u32;
}
macro_rules! impl_bit_counting {
($($t:ty),*) => {
$(impl BitCountingOps for $t {
#[inline] fn count_ones(self) -> u32 { self.count_ones() }
#[inline] fn count_zeros(self) -> u32 { self.count_zeros() }
#[inline] fn leading_zeros(self) -> u32 { self.leading_zeros() }
#[inline] fn trailing_zeros(self) -> u32 { self.trailing_zeros() }
#[inline] fn leading_ones(self) -> u32 { self.leading_ones() }
#[inline] fn trailing_ones(self) -> u32 { self.trailing_ones() }
})*
};
}
impl_bit_counting!(u8, u16, u32, u64, u128, usize, i8, i16, i32, i64, i128, isize);