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 Fletcher64 = Fletcher<u64, u32>;

impl FletcherSum<u32> for u64 {
    fn default_value() -> Self {
        0x00000000ffffffff
    }

    fn max_chunk_size() -> usize {
        92680
    }

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

    fn reduce(self) -> Self {
        (self & 0xffffffff) + (self >> 32)
    }
}