use alloc::vec::Vec;
pub(crate) trait BitsArith {
fn and(&self, rhs: &[u64]) -> Vec<u64>;
fn and_assign(&mut self, rhs: &[u64]);
fn or(&self, rhs: &[u64]) -> Vec<u64>;
fn or_assign(&mut self, rhs: &[u64]);
fn xor(&self, rhs: &[u64]) -> Vec<u64>;
fn xor_assign(&mut self, rhs: &[u64]);
fn not(&self, bit_len: usize) -> Vec<u64>;
fn not_assign(&mut self, bit_len: usize);
fn shl(&self, bit_len: usize, amount: usize) -> Vec<u64>;
fn shl_assign(&mut self, bit_len: usize, amount: usize);
fn shr(&self, bit_len: usize, amount: usize) -> Vec<u64>;
fn shr_assign(&mut self, bit_len: usize, amount: usize);
fn count_ones(&self, bit_len: usize) -> usize;
}
pub(crate) mod funcs_for_binary_core;
pub(crate) mod funcs_for_count_ones;
pub(crate) mod funcs_for_not_core;
pub(crate) mod funcs_for_shl_core;
pub(crate) mod funcs_for_shr_core;
pub(crate) mod impls_for_u64_slice;