#[macro_use]
mod macros;
pub trait BitOps: Copy + Sized {
#[must_use]
fn set_bit(self, bit: Self) -> Self;
#[must_use]
fn set_bit_exact(self, bit: Self, value: bool) -> Self;
#[must_use]
fn clear_bit(self, bit: Self) -> Self;
#[must_use]
fn is_set(self, bit: Self) -> bool;
#[must_use]
fn get_bit(self, bit: Self) -> Self;
#[must_use]
fn toggle_bit(self, bit: Self) -> Self;
#[must_use]
fn toggle_bits(self, bits: Self, shift: Self) -> Self;
#[must_use]
fn set_bits(self, value: Self, value_bits: Self, value_shift: Self) -> Self;
#[must_use]
fn set_bits_n(
self,
ops: &[(
Self, /* value */
Self, /* value_bits */
Self, /* value_shift */
)],
) -> Self;
#[must_use]
fn set_bits_exact(self, value: Self, value_bits: Self, value_shift: Self) -> Self;
#[must_use]
fn set_bits_exact_n(
self,
ops: &[(
Self, /* value */
Self, /* value_bits */
Self, /* value_shift */
)],
) -> Self;
#[must_use]
fn clear_bits(self, clear_mask: Self) -> Self;
#[must_use]
fn highest_bit(self) -> Option<Self>;
#[must_use]
fn lowest_bit(self) -> Option<Self>;
#[must_use]
fn get_bits(self, value_bits: Self, value_shift: Self) -> Self;
#[must_use]
fn create_mask(bits: Self) -> Self;
}
impl_trait!(u8);
impl_trait!(u16);
impl_trait!(u32);
impl_trait!(u64);
impl_trait!(u128);
impl_trait!(usize);