#![no_std]
#![forbid(non_ascii_idents, unsafe_code)]
#![deny(
// macro_use_extern_crate,
missing_copy_implementations,
// missing_debug_implementations,
rust_2018_idioms,
rust_2021_compatibility,
trivial_casts,
// trivial_numeric_casts,
unused_extern_crates,
unused_import_braces,
unused_qualifications
)]
#![warn(
// unused_crate_dependencies,
clippy::nursery,
clippy::pedantic,
clippy::mutex_atomic,
clippy::rc_buffer,
clippy::rc_mutex,
// clippy::expect_used,
// clippy::unwrap_used,
)]
#![allow(
clippy::cast_possible_truncation,
clippy::cast_possible_wrap,
clippy::cast_precision_loss,
clippy::cast_sign_loss,
clippy::future_not_send,
clippy::missing_errors_doc,
clippy::missing_panics_doc,
//clippy::module_name_repetitions,
clippy::must_use_candidate
)]
#[cfg(test)]
#[macro_use]
extern crate std;
#[macro_use]
mod internals;
#[macro_use]
mod macros;
pub mod crc128;
pub mod crc16;
pub mod crc32;
pub mod crc64;
pub mod crc8;
pub trait Register: Sized {}
impl Register for u8 {}
impl Register for u16 {}
impl Register for u32 {}
impl Register for u64 {}
impl Register for u128 {}
#[derive(Debug)]
pub struct Params<R: Register> {
pub width: u8,
pub poly: R,
pub init: R,
pub refin: bool,
pub refout: bool,
pub xorout: R,
pub check: R,
pub residue: R,
}
mod private {
pub trait Sealed {}
impl<R: super::Register> Sealed for R {}
}
pub trait ComputeMethod: private::Sealed {
type State;
}
pub struct GenericNoLookupTable<R: Register>(core::marker::PhantomData<R>);
pub struct GenericLookupTable32<R: Register>(core::marker::PhantomData<R>);
pub struct GenericLookupTable256<R: Register>(core::marker::PhantomData<R>);
pub struct GenericLookupTable256xN<R: Register, const S: usize>(core::marker::PhantomData<R>);
impl<W: Register> private::Sealed for GenericNoLookupTable<W> {}
impl<W: Register> private::Sealed for GenericLookupTable32<W> {}
impl<W: Register> private::Sealed for GenericLookupTable256<W> {}
impl<W: Register, const S: usize> private::Sealed for GenericLookupTable256xN<W, S> {}
impl<R: Register> ComputeMethod for GenericNoLookupTable<R> {
type State = ();
}
impl<R: Register> ComputeMethod for GenericLookupTable32<R> {
type State = [R; 32];
}
impl<R: Register> ComputeMethod for GenericLookupTable256<R> {
type State = [R; 256];
}
impl<R: Register> ComputeMethod for GenericLookupTable256xN<R, 4> {
type State = [[R; 256]; 4];
}
impl<R: Register> ComputeMethod for GenericLookupTable256xN<R, 8> {
type State = [[R; 256]; 8];
}
impl<R: Register> ComputeMethod for GenericLookupTable256xN<R, 16> {
type State = [[R; 256]; 16];
}
impl<R: Register> ComputeMethod for GenericLookupTable256xN<R, 32> {
type State = [[R; 256]; 32];
}