pub struct Adler32 { /* private fields */ }Expand description
Adler-32 checksum calculator.
An instance of this type is equivalent to an Adler-32 checksum: It can be created in the default
state via new (or the provided Default impl), or from a precalculated checksum via
from_checksum, and the currently stored checksum can be fetched via checksum.
This type also implements Hasher, which makes it easy to calculate Adler-32 checksums of any
type that implements or derives Hash. This also allows using Adler-32 in a HashMap, although
that is not recommended (while every checksum is a hash function, they are not necessarily a
good one).
Examples
Basic, piecewise checksum calculation:
use adler::Adler32;
let mut adler = Adler32::new();
adler.write_slice(&[0, 1, 2]);
adler.write_slice(&[3, 4, 5]);
assert_eq!(adler.checksum(), 0x00290010);Using Hash to process structures:
use std::hash::Hash;
use adler::Adler32;
#[derive(Hash)]
struct Data {
byte: u8,
word: u16,
big: u64,
}
let mut adler = Adler32::new();
let data = Data { byte: 0x1F, word: 0xABCD, big: !0 };
data.hash(&mut adler);
// hash value depends on architecture endianness
if cfg!(target_endian = "little") {
assert_eq!(adler.checksum(), 0x33410990);
}
if cfg!(target_endian = "big") {
assert_eq!(adler.checksum(), 0x331F0990);
}
Implementations
sourceimpl Adler32
impl Adler32
sourcepub fn from_checksum(sum: u32) -> Self
pub fn from_checksum(sum: u32) -> Self
Creates an Adler32 instance from a precomputed Adler-32 checksum.
This allows resuming checksum calculation without having to keep the Adler32 instance
around.
Example
let parts = [
"rust",
"acean",
];
let whole = adler::adler32_slice(b"rustacean");
let mut sum = Adler32::new();
sum.write_slice(parts[0].as_bytes());
let partial = sum.checksum();
// ...later
let mut sum = Adler32::from_checksum(partial);
sum.write_slice(parts[1].as_bytes());
assert_eq!(sum.checksum(), whole);sourcepub fn write_slice(&mut self, bytes: &[u8])
pub fn write_slice(&mut self, bytes: &[u8])
Adds bytes to the checksum calculation.
If efficiency matters, this should be called with Byte slices that contain at least a few thousand Bytes.
Trait Implementations
sourceimpl Hasher for Adler32
impl Hasher for Adler32
1.26.0 · sourcefn write_u128(&mut self, i: u128)
fn write_u128(&mut self, i: u128)
Writes a single u128 into this hasher.
1.3.0 · sourcefn write_usize(&mut self, i: usize)
fn write_usize(&mut self, i: usize)
Writes a single usize into this hasher.
1.26.0 · sourcefn write_i128(&mut self, i: i128)
fn write_i128(&mut self, i: i128)
Writes a single i128 into this hasher.
1.3.0 · sourcefn write_isize(&mut self, i: isize)
fn write_isize(&mut self, i: isize)
Writes a single isize into this hasher.
impl Copy for Adler32
Auto Trait Implementations
impl RefUnwindSafe for Adler32
impl Send for Adler32
impl Sync for Adler32
impl Unpin for Adler32
impl UnwindSafe for Adler32
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more