use crate::error::bits_overflow;
use crate::UsageError;
const fn u64_to_usize(val: u64) -> Option<usize> {
if usize::BITS >= u64::BITS {
Some(val as usize)
} else {
let max_usize: u64 = usize::MAX as u64;
if val <= max_usize {
Some(val as usize)
} else {
None
}
}
}
pub const fn required_octets_buffer_len(bits: u64) -> Result<usize, UsageError> {
let remainder = bits % 8;
let needed_octets = bits / 8 + if remainder == 0 { 0 } else { 1 };
if let Some(result) = u64_to_usize(needed_octets) {
Ok(result)
} else {
Err(bits_overflow())
}
}
pub const fn required_quintets_buffer_len(bits: u64) -> Result<usize, UsageError> {
let remainder = bits % 5;
let needed_octets = bits / 5 + if remainder == 0 { 0 } else { 1 };
if let Some(result) = u64_to_usize(needed_octets) {
Ok(result)
} else {
Err(bits_overflow())
}
}