Skip to content

Commit

Permalink
move hash enum to make them easier to find
Browse files Browse the repository at this point in the history
  • Loading branch information
maxbachmann committed Nov 26, 2023
1 parent 8f42527 commit b9f3817
Show file tree
Hide file tree
Showing 15 changed files with 31 additions and 24 deletions.
11 changes: 1 addition & 10 deletions src/details/common.rs
Original file line number Diff line number Diff line change
@@ -1,20 +1,11 @@
use crate::{Hash, HashableChar};
use std::iter::{Skip, Take};

pub fn norm_sim_to_norm_dist(score_cutoff: f64) -> f64 {
let imprecision = 0.00001;
(1.0 - score_cutoff + imprecision).min(1.0)
}

#[derive(Debug, Copy, Clone)]
pub enum Hash {
UNSIGNED(u64),
SIGNED(i64),
}

pub trait HashableChar {
fn hash_char(&self) -> Hash;
}

macro_rules! impl_hashable_char {
($base_type:ty, $kind:tt $(, $t:ty)*) => {
impl HashableChar for $base_type {
Expand Down
3 changes: 2 additions & 1 deletion src/details/distance.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use crate::details::common::{norm_sim_to_norm_dist, HashableChar};
use crate::details::common::norm_sim_to_norm_dist;
use crate::HashableChar;

pub trait MetricUsize {
fn maximum(&self, len1: usize, len2: usize) -> usize;
Expand Down
2 changes: 1 addition & 1 deletion src/details/growing_hashmap.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::details::common::{Hash, HashableChar};
use crate::{Hash, HashableChar};

#[derive(Default, Clone)]
struct GrowingHashmapMapElem<ValueType> {
Expand Down
2 changes: 1 addition & 1 deletion src/details/pattern_match_vector.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::details::common::{Hash, HashableChar};
use crate::details::intrinsics::ceil_div_usize;
use crate::details::matrix::BitMatrix;
use crate::{Hash, HashableChar};

#[derive(Clone, Copy, Default)]
struct BitvectorHashmapMapElem {
Expand Down
3 changes: 2 additions & 1 deletion src/distance/damerau_levenshtein.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,10 @@
//! ![benchmark results](https://raw.githubusercontent.com/maxbachmann/rapidfuzz-rs/main/doc/bench/damerau_levenshtein.svg)
//!
use crate::details::common::{remove_common_affix, HashableChar};
use crate::details::common::remove_common_affix;
use crate::details::distance::MetricUsize;
use crate::details::growing_hashmap::{GrowingHashmap, HybridGrowingHashmap};
use crate::HashableChar;
use std::cmp::{max, min};
use std::mem;

Expand Down
2 changes: 1 addition & 1 deletion src/distance/hamming.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use crate::details::common::HashableChar;
use crate::details::distance::MetricUsize;
use crate::HashableChar;

use std::error;
use std::fmt::{self, Display, Formatter};
Expand Down
2 changes: 1 addition & 1 deletion src/distance/indel.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::details::common::HashableChar;
use crate::details::distance::MetricUsize;
use crate::details::pattern_match_vector::BlockPatternMatchVector;
use crate::distance::lcs_seq;
use crate::HashableChar;

pub(crate) struct IndividualComparator;

Expand Down
3 changes: 2 additions & 1 deletion src/distance/jaro.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
use crate::details::common::{find_common_prefix, HashableChar};
use crate::details::common::find_common_prefix;
use crate::details::distance::Metricf64;
use crate::details::intrinsics::{bit_mask_lsb_u64, blsi_u64, blsr_u64, ceil_div_usize};
use crate::details::pattern_match_vector::{
BitVectorInterface, BlockPatternMatchVector, PatternMatchVector,
};
use crate::Hash;
use crate::HashableChar;
use std::cmp::min;

struct FlaggedCharsWord {
Expand Down
2 changes: 1 addition & 1 deletion src/distance/jaro_winkler.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::details::common::HashableChar;
use crate::details::distance::Metricf64;
use crate::details::pattern_match_vector::BlockPatternMatchVector;
use crate::HashableChar;

use crate::distance::jaro;

Expand Down
3 changes: 2 additions & 1 deletion src/distance/lcs_seq.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
use crate::details::common::{remove_common_affix, HashableChar};
use crate::details::common::remove_common_affix;
use crate::details::distance::MetricUsize;
use crate::details::intrinsics::{carrying_add, ceil_div_usize};
use crate::details::matrix::ShiftedBitMatrix;
use crate::details::pattern_match_vector::{
BitVectorInterface, BlockPatternMatchVector, PatternMatchVector,
};
use crate::HashableChar;
use std::cmp::{max, min};

#[derive(Default)]
Expand Down
3 changes: 2 additions & 1 deletion src/distance/levenshtein.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::details::common::{remove_common_affix, HashableChar};
use crate::details::common::remove_common_affix;
use crate::details::distance::MetricUsize;
use crate::details::growing_hashmap::{GrowingHashmap, HybridGrowingHashmap};
use crate::details::intrinsics::{ceil_div_usize, shr64};
Expand All @@ -7,6 +7,7 @@ use crate::details::pattern_match_vector::{
BitVectorInterface, BlockPatternMatchVector, PatternMatchVector,
};
use crate::distance::indel;
use crate::HashableChar;
use std::cmp::{max, min};
use std::mem;

Expand Down
3 changes: 2 additions & 1 deletion src/distance/osa.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
use crate::details::common::{remove_common_affix, HashableChar};
use crate::details::common::remove_common_affix;
use crate::details::distance::MetricUsize;
use crate::details::pattern_match_vector::{
BitVectorInterface, BlockPatternMatchVector, PatternMatchVector,
};
use crate::HashableChar;
use std::mem;

/// Bitparallel implementation of the OSA distance.
Expand Down
3 changes: 2 additions & 1 deletion src/distance/postfix.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use crate::details::common::{find_common_suffix, HashableChar};
use crate::details::common::find_common_suffix;
use crate::details::distance::MetricUsize;
use crate::HashableChar;

struct IndividualComparator;

Expand Down
3 changes: 2 additions & 1 deletion src/distance/prefix.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use crate::details::common::{find_common_prefix, HashableChar};
use crate::details::common::find_common_prefix;
use crate::details::distance::MetricUsize;
use crate::HashableChar;

struct IndividualComparator;

Expand Down
10 changes: 9 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,12 @@ pub(crate) mod details;
pub mod distance;
pub mod fuzz;

pub use crate::details::common::{Hash, HashableChar};
#[derive(Debug, Copy, Clone)]
pub enum Hash {
UNSIGNED(u64),
SIGNED(i64),
}

pub trait HashableChar {
fn hash_char(&self) -> Hash;
}

0 comments on commit b9f3817

Please sign in to comment.