fuzzyhash 0.1.1

Pure Rust fuzzy hash implementation
Documentation
use constants;

pub struct Roll {
    pub h1: u32,
    pub h2: u32,
    pub h3: u32,
    pub n: u32,
    pub window: Vec<u8>
}

impl Roll {

    pub fn sum(&mut self) -> u32 {
        self.h3.wrapping_add(self.h1.wrapping_add(self.h2))
    }

    pub fn hash(&mut self, c: u8) {
        self.h2 -= self.h1;
        self.h2 += constants::ROLLING_WINDOW as u32 * c as u32;

        self.h1 += c as u32;
        self.h1 -= self.window[(self.n as usize % constants::ROLLING_WINDOW)] as u32;

        self.window[(self.n as usize % constants::ROLLING_WINDOW)] = c;
        self.n += 1;

        self.h3 <<= 5;
        self.h3 ^= c as u32;
    }

    pub fn new() -> Roll {
        Roll {
            h1: 0,
            h2: 0,
            h3: 0,
            n: 0,
            window: vec![0; constants::ROLLING_WINDOW]
        }
    }
}