use crate::bits::Bits;
use crate::endian::{BigEndian, Endian, LittleEndian};
pub trait BitsMut: Bits {
fn set_bit_in<E>(&mut self, index: u32)
where
E: Endian;
fn set_bit(&mut self, index: u32);
#[inline]
fn set_bit_le(&mut self, index: u32) {
self.set_bit_in::<LittleEndian>(index);
}
#[inline]
fn set_bit_be(&mut self, index: u32) {
self.set_bit_in::<BigEndian>(index);
}
fn clear_bit_in<E>(&mut self, index: u32)
where
E: Endian;
fn clear_bit(&mut self, index: u32);
#[inline]
fn clear_bit_le(&mut self, index: u32) {
self.clear_bit_in::<LittleEndian>(index);
}
#[inline]
fn clear_bit_be(&mut self, index: u32) {
self.clear_bit_in::<BigEndian>(index);
}
fn clear_bits(&mut self);
fn union_assign(&mut self, other: &Self);
fn conjunction_assign(&mut self, other: &Self);
fn difference_assign(&mut self, other: &Self);
fn symmetric_difference_assign(&mut self, other: &Self);
}
impl<T> BitsMut for &mut T
where
T: ?Sized + BitsMut,
{
#[inline]
fn set_bit_in<E>(&mut self, index: u32)
where
E: Endian,
{
(**self).set_bit_in::<E>(index);
}
#[inline]
fn set_bit(&mut self, index: u32) {
(**self).set_bit(index);
}
#[inline]
fn clear_bit_in<E>(&mut self, index: u32)
where
E: Endian,
{
(**self).clear_bit_in::<E>(index);
}
#[inline]
fn clear_bit(&mut self, index: u32) {
(**self).clear_bit(index);
}
#[inline]
fn clear_bits(&mut self) {
(**self).clear_bits();
}
#[inline]
fn union_assign(&mut self, other: &Self) {
(**self).union_assign(other);
}
#[inline]
fn conjunction_assign(&mut self, other: &Self) {
(**self).conjunction_assign(other);
}
#[inline]
fn difference_assign(&mut self, other: &Self) {
(**self).difference_assign(other);
}
#[inline]
fn symmetric_difference_assign(&mut self, other: &Self) {
(**self).symmetric_difference_assign(other);
}
}