1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
use generic_fletcher::Fletcher;
use generic_fletcher::FletcherSum;

pub type Fletcher32 = Fletcher<u32, u16>;

impl FletcherSum<u16> for u32 {
    fn default_value() -> Self {
        0x0000ffff
    }

    fn max_chunk_size() -> usize {
        360
    }

    fn combine(lower: &Self, upper: &Self) -> Self {
        lower | (upper << 16)
    }

    fn reduce(self) -> Self {
        (self & 0xffff) + (self >> 16)
    }
}