pub(crate) trait BitsEdit {
fn mask_unused_bits(&mut self, len: usize);
fn read_bit_at(&self, index: usize) -> bool;
fn set_bit_at(&mut self, index: usize, value: bool);
fn read_word_at(&self, bit_start: usize) -> u64;
fn write_word_at(&mut self, bit_start: usize, value: u64, len: usize);
fn copy_bits(&self, start: usize, len: usize) -> BitsCopied<'_>;
fn clear_bits_at(&mut self, start: usize, len: usize);
fn shift_right_in_place(&mut self, start: usize, count: usize);
fn shift_left_in_place(&mut self, start: usize, count: usize);
}
pub(crate) mod bits_copied;
pub(crate) mod impls_for_u64_slice;
pub(crate) use bits_copied::BitsCopied;