simstring_rust 0.3.4

A native Rust implementation of the SimString algorithm
Documentation
use super::Measure;
use crate::database::Database;
use lasso::Spur;

#[derive(Default, Clone, Copy)]
pub struct ExactMatch;

impl Measure for ExactMatch {
    fn min_feature_size(&self, query_size: usize, _alpha: f64) -> usize {
        query_size
    }

    fn max_feature_size(&self, query_size: usize, _alpha: f64, _db: &dyn Database) -> usize {
        query_size
    }

    fn minimum_common_feature_count(
        &self,
        query_size: usize,
        _y_size: usize,
        _alpha: f64,
    ) -> usize {
        query_size
    }

    fn similarity(&self, x: &[Spur], y: &[Spur]) -> f64 {
        if x.len() != y.len() {
            return 0.0;
        }

        if x.iter().zip(y.iter()).all(|(a, b)| a == b) {
            1.0
        } else {
            0.0
        }
    }
}