#![cfg_attr(
feature = "alloc",
doc = "
assert_eq!([71, 245, 138].to_vec(), crc24.get_crc_vec_be());
assert_eq!(\"0x47F58A\", &crc24.to_string());
"
)]
#![cfg_attr(
feature = "alloc",
doc = "
assert_eq!([64, 84, 74, 48, 97, 55, 182, 236].to_vec(), crc64.get_crc_vec_be());
assert_eq!(\"0x40544A306137B6EC\", &crc64.to_string());
"
)]
#![cfg_attr(not(feature = "std"), no_std)]
#[cfg(feature = "alloc")]
#[macro_use]
extern crate alloc;
#[cfg(feature = "alloc")]
use alloc::fmt::{self, Display, Formatter};
#[cfg(feature = "alloc")]
use alloc::vec::Vec;
#[cfg(feature = "heapless")]
use heapless::Vec as HeaplessVec;
mod constants;
mod crc_u16;
mod crc_u32;
mod crc_u64;
mod crc_u8;
mod lookup_table;
pub use crc_u16::CRCu16;
pub use crc_u32::CRCu32;
pub use crc_u64::CRCu64;
pub use crc_u8::CRCu8;
#[allow(clippy::upper_case_acronyms, clippy::large_enum_variant)]
#[cfg_attr(feature = "alloc", derive(Debug))]
pub enum CRC {
CRCu8(CRCu8),
CRCu16(CRCu16),
CRCu32(CRCu32),
CRCu64(CRCu64),
}
#[cfg(feature = "alloc")]
impl Display for CRC {
#[inline]
fn fmt(&self, f: &mut Formatter) -> Result<(), fmt::Error> {
match self {
CRC::CRCu8(crc) => Display::fmt(crc, f),
CRC::CRCu16(crc) => Display::fmt(crc, f),
CRC::CRCu32(crc) => Display::fmt(crc, f),
CRC::CRCu64(crc) => Display::fmt(crc, f),
}
}
}
impl CRC {
#[inline]
pub fn create_crc(poly: u64, bits: u8, initial: u64, final_xor: u64, reflect: bool) -> CRC {
if bits <= 8 {
Self::create_crc_u8(poly as u8, bits, initial as u8, final_xor as u8, reflect)
} else if bits <= 16 {
Self::create_crc_u16(poly as u16, bits, initial as u16, final_xor as u16, reflect)
} else if bits <= 32 {
Self::create_crc_u32(poly as u32, bits, initial as u32, final_xor as u32, reflect)
} else if bits <= 64 {
Self::create_crc_u64(poly, bits, initial, final_xor, reflect)
} else {
unimplemented!()
}
}
#[inline]
pub fn create_crc_u8(poly: u8, bits: u8, initial: u8, final_xor: u8, reflect: bool) -> CRC {
let crc = CRCu8::create_crc(poly, bits, initial, final_xor, reflect);
CRC::CRCu8(crc)
}
#[inline]
pub fn create_crc_u16(poly: u16, bits: u8, initial: u16, final_xor: u16, reflect: bool) -> CRC {
let crc = CRCu16::create_crc(poly, bits, initial, final_xor, reflect);
CRC::CRCu16(crc)
}
#[inline]
pub fn create_crc_u32(poly: u32, bits: u8, initial: u32, final_xor: u32, reflect: bool) -> CRC {
let crc = CRCu32::create_crc(poly, bits, initial, final_xor, reflect);
CRC::CRCu32(crc)
}
#[inline]
pub fn create_crc_u64(poly: u64, bits: u8, initial: u64, final_xor: u64, reflect: bool) -> CRC {
let crc = CRCu64::create_crc(poly, bits, initial, final_xor, reflect);
CRC::CRCu64(crc)
}
#[inline]
pub fn digest<T: ?Sized + AsRef<[u8]>>(&mut self, data: &T) {
match self {
CRC::CRCu8(crc) => crc.digest(data),
CRC::CRCu16(crc) => crc.digest(data),
CRC::CRCu32(crc) => crc.digest(data),
CRC::CRCu64(crc) => crc.digest(data),
}
}
#[inline]
pub fn reset(&mut self) {
match self {
CRC::CRCu8(crc) => crc.reset(),
CRC::CRCu16(crc) => crc.reset(),
CRC::CRCu32(crc) => crc.reset(),
CRC::CRCu64(crc) => crc.reset(),
}
}
#[inline]
pub fn get_crc(&self) -> u64 {
match self {
CRC::CRCu8(crc) => u64::from(crc.get_crc()),
CRC::CRCu16(crc) => u64::from(crc.get_crc()),
CRC::CRCu32(crc) => u64::from(crc.get_crc()),
CRC::CRCu64(crc) => crc.get_crc(),
}
}
}
#[cfg(feature = "alloc")]
impl CRC {
#[inline]
pub fn get_crc_vec_le(&self) -> Vec<u8> {
match self {
CRC::CRCu8(crc) => vec![crc.get_crc()],
CRC::CRCu16(crc) => crc.get_crc_vec_le(),
CRC::CRCu32(crc) => crc.get_crc_vec_le(),
CRC::CRCu64(crc) => crc.get_crc_vec_le(),
}
}
#[inline]
pub fn get_crc_vec_be(&self) -> Vec<u8> {
match self {
CRC::CRCu8(crc) => vec![crc.get_crc()],
CRC::CRCu16(crc) => crc.get_crc_vec_be(),
CRC::CRCu32(crc) => crc.get_crc_vec_be(),
CRC::CRCu64(crc) => crc.get_crc_vec_be(),
}
}
}
#[cfg(feature = "heapless")]
impl CRC {
pub fn get_crc_heapless_vec_le(&self) -> HeaplessVec<u8, 8> {
let mut vec = HeaplessVec::new();
let bits = match self {
CRC::CRCu8(crc) => crc.bits,
CRC::CRCu16(crc) => crc.bits,
CRC::CRCu32(crc) => crc.bits,
CRC::CRCu64(crc) => crc.bits,
};
let e = u64::from((u16::from(bits) + 7) >> 3);
let e_dec = e - 1;
let o = e_dec * 8;
let crc = self.get_crc();
for i in 0..e {
vec.push((crc << ((e_dec - i) * 8) >> o) as u8).unwrap();
}
vec
}
pub fn get_crc_heapless_vec_be(&self) -> HeaplessVec<u8, 8> {
let mut vec = HeaplessVec::new();
let bits = match self {
CRC::CRCu8(crc) => crc.bits,
CRC::CRCu16(crc) => crc.bits,
CRC::CRCu32(crc) => crc.bits,
CRC::CRCu64(crc) => crc.bits,
};
let e = u64::from((u16::from(bits) + 7) >> 3);
let e_dec = e - 1;
let o = e_dec * 8;
let crc = self.get_crc();
for i in 0..e {
vec.push((crc << (i * 8) >> o) as u8).unwrap();
}
vec
}
}
impl CRC {
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x4\", &crc.to_string());")]
pub fn crc3gsm() -> CRC {
CRC::CRCu8(CRCu8::crc3gsm())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x7\", &crc.to_string());")]
pub fn crc4itu() -> CRC {
CRC::CRCu8(CRCu8::crc4itu())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xB\", &crc.to_string());")]
pub fn crc4interlaken() -> CRC {
CRC::CRCu8(CRCu8::crc4interlaken())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x00\", &crc.to_string());")]
pub fn crc5epc() -> CRC {
CRC::CRCu8(CRCu8::crc5epc())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x07\", &crc.to_string());")]
pub fn crc5itu() -> CRC {
CRC::CRCu8(CRCu8::crc5itu())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x19\", &crc.to_string());")]
pub fn crc5usb() -> CRC {
CRC::CRCu8(CRCu8::crc5usb())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x0D\", &crc.to_string());")]
#[inline]
pub fn crc6cdma2000_a() -> CRC {
CRC::CRCu8(CRCu8::crc6cdma2000_a())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x3B\", &crc.to_string());")]
#[inline]
pub fn crc6cdma2000_b() -> CRC {
CRC::CRCu8(CRCu8::crc6cdma2000_b())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x26\", &crc.to_string());")]
#[inline]
pub fn crc6darc() -> CRC {
CRC::CRCu8(CRCu8::crc6darc())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x13\", &crc.to_string());")]
#[inline]
pub fn crc6gsm() -> CRC {
CRC::CRCu8(CRCu8::crc6gsm())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x06\", &crc.to_string());")]
#[inline]
pub fn crc6itu() -> CRC {
CRC::CRCu8(CRCu8::crc6itu())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x75\", &crc.to_string());")]
#[inline]
pub fn crc7() -> CRC {
CRC::CRCu8(CRCu8::crc7())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x61\", &crc.to_string());")]
#[inline]
pub fn crc7umts() -> CRC {
CRC::CRCu8(CRCu8::crc7umts())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xF4\", &crc.to_string());")]
#[inline]
pub fn crc8() -> CRC {
CRC::CRCu8(CRCu8::crc8())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xDA\", &crc.to_string());")]
#[inline]
pub fn crc8cdma2000() -> CRC {
CRC::CRCu8(CRCu8::crc8cdma2000())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x15\", &crc.to_string());")]
#[inline]
pub fn crc8darc() -> CRC {
CRC::CRCu8(CRCu8::crc8darc())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xBC\", &crc.to_string());")]
#[inline]
pub fn crc8dvb_s2() -> CRC {
CRC::CRCu8(CRCu8::crc8dvb_s2())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x97\", &crc.to_string());")]
#[inline]
pub fn crc8ebu() -> CRC {
CRC::CRCu8(CRCu8::crc8ebu())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x7E\", &crc.to_string());")]
#[inline]
pub fn crc8icode() -> CRC {
CRC::CRCu8(CRCu8::crc8icode())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xA1\", &crc.to_string());")]
#[inline]
pub fn crc8itu() -> CRC {
CRC::CRCu8(CRCu8::crc8itu())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xA1\", &crc.to_string());")]
#[inline]
pub fn crc8maxim() -> CRC {
CRC::CRCu8(CRCu8::crc8maxim())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xD0\", &crc.to_string());")]
#[inline]
pub fn crc8rohc() -> CRC {
CRC::CRCu8(CRCu8::crc8rohc())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x25\", &crc.to_string());")]
#[inline]
pub fn crc8wcdma() -> CRC {
CRC::CRCu8(CRCu8::crc8wcdma())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x199\", &crc.to_string());")]
#[inline]
pub fn crc10() -> CRC {
CRC::CRCu16(CRCu16::crc10())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x233\", &crc.to_string());")]
#[inline]
pub fn crc10cdma2000() -> CRC {
CRC::CRCu16(CRCu16::crc10cdma2000())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x12A\", &crc.to_string());")]
#[inline]
pub fn crc10gsm() -> CRC {
CRC::CRCu16(CRCu16::crc10gsm())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x5A3\", &crc.to_string());")]
#[inline]
pub fn crc11() -> CRC {
CRC::CRCu16(CRCu16::crc11())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xF5B\", &crc.to_string());")]
#[inline]
pub fn crc12() -> CRC {
CRC::CRCu16(CRCu16::crc12())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xD4D\", &crc.to_string());")]
#[inline]
pub fn crc12cdma2000() -> CRC {
CRC::CRCu16(CRCu16::crc12cdma2000())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xB34\", &crc.to_string());")]
#[inline]
pub fn crc12gsm() -> CRC {
CRC::CRCu16(CRCu16::crc12gsm())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x04FA\", &crc.to_string());")]
#[inline]
pub fn crc13bbc() -> CRC {
CRC::CRCu16(CRCu16::crc13bbc())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x082D\", &crc.to_string());")]
#[inline]
pub fn crc14darc() -> CRC {
CRC::CRCu16(CRCu16::crc14darc())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x30AE\", &crc.to_string());")]
#[inline]
pub fn crc14gsm() -> CRC {
CRC::CRCu16(CRCu16::crc14gsm())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x059E\", &crc.to_string());")]
#[inline]
pub fn crc15can() -> CRC {
CRC::CRCu16(CRCu16::crc15can())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x2566\", &crc.to_string());")]
#[inline]
pub fn crc15mpt1327() -> CRC {
CRC::CRCu16(CRCu16::crc15mpt1327())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xBB3D\", &crc.to_string());")]
#[inline]
pub fn crc16() -> CRC {
CRC::CRCu16(CRCu16::crc16())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x29B1\", &crc.to_string());")]
#[inline]
pub fn crc16ccitt_false() -> CRC {
CRC::CRCu16(CRCu16::crc16ccitt_false())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xE5CC\", &crc.to_string());")]
#[inline]
pub fn crc16aug_ccitt() -> CRC {
CRC::CRCu16(CRCu16::crc16aug_ccitt())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xFEE8\", &crc.to_string());")]
#[inline]
pub fn crc16buypass() -> CRC {
CRC::CRCu16(CRCu16::crc16buypass())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x4C06\", &crc.to_string());")]
#[inline]
pub fn crc16cdma2000() -> CRC {
CRC::CRCu16(CRCu16::crc16cdma2000())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x9ECF\", &crc.to_string());")]
#[inline]
pub fn crc16dds_110() -> CRC {
CRC::CRCu16(CRCu16::crc16dds_110())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x007E\", &crc.to_string());")]
#[inline]
pub fn crc16dect_r() -> CRC {
CRC::CRCu16(CRCu16::crc16dect_r())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x007F\", &crc.to_string());")]
#[inline]
pub fn crc16dect_x() -> CRC {
CRC::CRCu16(CRCu16::crc16dect_x())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xEA82\", &crc.to_string());")]
#[inline]
pub fn crc16dnp() -> CRC {
CRC::CRCu16(CRCu16::crc16dnp())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xC2B7\", &crc.to_string());")]
#[inline]
pub fn crc16en_13757() -> CRC {
CRC::CRCu16(CRCu16::crc16en_13757())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xD64E\", &crc.to_string());")]
#[inline]
pub fn crc16genibus() -> CRC {
CRC::CRCu16(CRCu16::crc16genibus())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x44C2\", &crc.to_string());")]
#[inline]
pub fn crc16maxim() -> CRC {
CRC::CRCu16(CRCu16::crc16maxim())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x6F91\", &crc.to_string());")]
#[inline]
pub fn crc16mcrf4cc() -> CRC {
CRC::CRCu16(CRCu16::crc16mcrf4cc())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x63D0\", &crc.to_string());")]
#[inline]
pub fn crc16riello() -> CRC {
CRC::CRCu16(CRCu16::crc16riello())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xD0DB\", &crc.to_string());")]
#[inline]
pub fn crc16t10_dif() -> CRC {
CRC::CRCu16(CRCu16::crc16t10_dif())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x0FB3\", &crc.to_string());")]
#[inline]
pub fn crc16teledisk() -> CRC {
CRC::CRCu16(CRCu16::crc16teledisk())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x26B1\", &crc.to_string());")]
#[inline]
pub fn crc16tms13157() -> CRC {
CRC::CRCu16(CRCu16::crc16tms13157())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xB4C8\", &crc.to_string());")]
#[inline]
pub fn crc16usb() -> CRC {
CRC::CRCu16(CRCu16::crc16usb())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xBF05\", &crc.to_string());")]
#[inline]
pub fn crc_a() -> CRC {
CRC::CRCu16(CRCu16::crc_a())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x2189\", &crc.to_string());")]
#[inline]
pub fn crc16kermit() -> CRC {
CRC::CRCu16(CRCu16::crc16kermit())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x4B37\", &crc.to_string());")]
#[inline]
pub fn crc16modbus() -> CRC {
CRC::CRCu16(CRCu16::crc16modbus())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x906E\", &crc.to_string());")]
#[inline]
pub fn crc16_x25() -> CRC {
CRC::CRCu16(CRCu16::crc16_x25())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x31C3\", &crc.to_string());")]
#[inline]
pub fn crc16xmodem() -> CRC {
CRC::CRCu16(CRCu16::crc16xmodem())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x04F03\", &crc.to_string());")]
#[inline]
pub fn crc17can() -> CRC {
CRC::CRCu32(CRCu32::crc17can())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x0ED841\", &crc.to_string());")]
#[inline]
pub fn crc21can() -> CRC {
CRC::CRCu32(CRCu32::crc21can())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x21CF02\", &crc.to_string());")]
#[inline]
pub fn crc24() -> CRC {
CRC::CRCu32(CRCu32::crc24())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xC25A56\", &crc.to_string());")]
#[inline]
pub fn crc24ble() -> CRC {
CRC::CRCu32(CRCu32::crc24ble())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x7979BD\", &crc.to_string());")]
#[inline]
pub fn crc24flexray_a() -> CRC {
CRC::CRCu32(CRCu32::crc24flexray_a())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x1F23B8\", &crc.to_string());")]
#[inline]
pub fn crc24flexray_b() -> CRC {
CRC::CRCu32(CRCu32::crc24flexray_b())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xCDE703\", &crc.to_string());")]
#[inline]
pub fn crc24lte_a() -> CRC {
CRC::CRCu32(CRCu32::crc24lte_a())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x23EF52\", &crc.to_string());")]
#[inline]
pub fn crc24lte_b() -> CRC {
CRC::CRCu32(CRCu32::crc24lte_b())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x200FA5\", &crc.to_string());")]
#[inline]
pub fn crc24os9() -> CRC {
CRC::CRCu32(CRCu32::crc24os9())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x04C34ABF\", &crc.to_string());")]
#[inline]
pub fn crc30cdma() -> CRC {
CRC::CRCu32(CRCu32::crc30cdma())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xCBF43926\", &crc.to_string());")]
#[inline]
pub fn crc32() -> CRC {
CRC::CRCu32(CRCu32::crc32())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x181989FC\", &crc.to_string());")]
#[inline]
pub fn crc32mhash() -> CRC {
CRC::CRCu32(CRCu32::crc32mhash())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xFC891918\", &crc.to_string());")]
#[inline]
pub fn crc32bzip2() -> CRC {
CRC::CRCu32(CRCu32::crc32bzip2())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xE3069283\", &crc.to_string());")]
#[inline]
pub fn crc32c() -> CRC {
CRC::CRCu32(CRCu32::crc32c())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x87315576\", &crc.to_string());")]
#[inline]
pub fn crc32d() -> CRC {
CRC::CRCu32(CRCu32::crc32d())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x0376E6E7\", &crc.to_string());")]
#[inline]
pub fn crc32mpeg2() -> CRC {
CRC::CRCu32(CRCu32::crc32mpeg2())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x765E7680\", &crc.to_string());")]
#[inline]
pub fn crc32posix() -> CRC {
CRC::CRCu32(CRCu32::crc32posix())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x3010BF7F\", &crc.to_string());")]
#[inline]
pub fn crc32q() -> CRC {
CRC::CRCu32(CRCu32::crc32q())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x340BC6D9\", &crc.to_string());")]
#[inline]
pub fn crc32jamcrc() -> CRC {
CRC::CRCu32(CRCu32::crc32jamcrc())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xBD0BE338\", &crc.to_string());")]
#[inline]
pub fn crc32xfer() -> CRC {
CRC::CRCu32(CRCu32::crc32xfer())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xD4164FC646\", &crc.to_string());")]
#[inline]
pub fn crc40gsm() -> CRC {
CRC::CRCu64(CRCu64::crc40gsm())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x6C40DF5F0B497347\", &crc.to_string());")]
#[inline]
pub fn crc64() -> CRC {
CRC::CRCu64(CRCu64::crc64())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xB90956C775A41001\", &crc.to_string());")]
#[inline]
pub fn crc64iso() -> CRC {
CRC::CRCu64(CRCu64::crc64iso())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0x62EC59E3F1A4F00A\", &crc.to_string());")]
#[inline]
pub fn crc64we() -> CRC {
CRC::CRCu64(CRCu64::crc64we())
}
#[cfg_attr(feature = "alloc", doc = "assert_eq!(\"0xE9C6D914C4B8D9CA\", &crc.to_string());")]
#[inline]
pub fn crc64jones() -> CRC {
CRC::CRCu64(CRCu64::crc64jones())
}
}