pub const U64_LEN: usize = size_of::<u64>();
pub fn min_len_in_bytes(value: u64) -> u8 {
if value == 0 {
return 1; }
let leading_zeros = value
.to_be_bytes()
.iter()
.take_while(|&&value| value == 0)
.count();
(U64_LEN - leading_zeros) as u8 }
#[cfg(test)]
mod test {
use super::min_len_in_bytes;
use pretty_assertions::assert_eq;
#[test]
fn nof_non_zero_bytes() {
assert_eq!(1u8, min_len_in_bytes(0));
assert_eq!(1u8, min_len_in_bytes(7));
assert_eq!(2u8, min_len_in_bytes(256));
assert_eq!(8u8, min_len_in_bytes(u64::MAX));
}
}