use alloc::vec::Vec;
use crate::WORD_BITS;
#[inline]
pub(crate) fn low_mask(bits: usize) -> u64 {
if bits >= WORD_BITS {
u64::MAX
} else {
(1u64 << bits) - 1
}
}
#[inline]
pub(crate) fn last_word_mask(len: usize) -> u64 {
let rem = len % WORD_BITS;
if rem == 0 {
u64::MAX
} else {
(1u64 << rem) - 1
}
}
#[inline]
pub(crate) fn word_len(bit_len: usize) -> usize {
bit_len / WORD_BITS + usize::from(bit_len % WORD_BITS != 0)
}
#[inline]
pub(crate) fn zero_words(words: usize) -> Vec<u64> {
let mut bits = Vec::with_capacity(words);
bits.resize(words, 0);
bits
}
#[cfg(test)]
mod tests_for_low_mask;
#[cfg(test)]
mod tests_for_last_word_mask;
#[cfg(test)]
mod tests_for_word_len;
#[cfg(test)]
mod tests_for_zero_words;