idhash 0.3.0

Calculate a Row-Invariant ID for Tabular Data
Documentation
#[derive(Clone, Copy)]
pub struct IdHashConfigBuilder {
    digits: Option<u32>,
    characters: Option<usize>,
    truncation: Option<usize>,
}

impl Default for IdHashConfigBuilder {
    fn default() -> Self {
        Self::new()
    }
}

impl IdHashConfigBuilder {
    pub fn new() -> Self {
        IdHashConfigBuilder {
            digits: None,
            characters: None,
            truncation: None,
        }
    }

    pub fn digits(&mut self, x: u32) -> &mut IdHashConfigBuilder {
        self.digits = Some(x);
        self
    }

    pub fn characters(&mut self, x: usize) -> &mut IdHashConfigBuilder {
        self.characters = Some(x);
        self
    }

    pub fn truncation(&mut self, x: usize) -> &mut IdHashConfigBuilder {
        self.truncation = Some(x);
        self
    }

    pub fn build(&self) -> IdHashConfig {
        IdHashConfig {
            digits: if let Some(digits) = self.digits {
                digits as usize
            } else {
                7
            },
            truncation: if let Some(truncation) = self.truncation {
                truncation
            } else {
                128
            },
            characters: if let Some(characters) = self.characters {
                characters
            } else {
                128
            },
        }
    }
}

#[derive(Clone, Copy, Debug)]
pub struct IdHashConfig {
    pub digits: usize,
    pub truncation: usize,
    pub characters: usize,
}