const fn build_table() -> [u32; 256] { let mut table = [0u32; 256]; let mut i = 0; while i < 256 { let mut c = i as u32; let mut k = 0; while k < 8 { c = if c & 1 != 0 { 0xEDB8_8320 ^ (c >> 1) } else { c >> 1 }; k += 1; } table[i] = c; i += 1; } table } const TABLE: [u32; 256] = build_table(); pub fn append(initial: u32, data: &[u8]) -> u32 { let mut crc = !initial; for &b in data { crc = TABLE[((crc ^ b as u32) & 0xFF) as usize] ^ (crc >> 8); } !crc } pub fn compute(data: &[u8]) -> u32 { append(0, data) }