[−][src]Struct eddie::Hamming
Hamming distance.
Usage
use eddie::Hamming; let hamming = Hamming::new(); let dist = hamming.distance("martha", "marhta"); assert_eq!(dist, Some(2));
Returns None
if strings have different lengths:
let dist = hamming.distance("martha", "march"); assert_eq!(dist, None);
Complementary metrics
Relative distance:
let rel = hamming.rel_dist(s1, s2)?; let dist = hamming.distance(s1, s2).map(|d| d as f64)?; let max_len = max(s1.len(), s2.len()) as f64; assert_eq!(rel, dist / max_len);
Similarity:
let rel = hamming.rel_dist(s1, s2)?; let sim = hamming.similarity(s1, s2)?; assert_eq!(sim, 1.0 - rel);
Methods
impl Hamming
[src]
pub fn new() -> Self
[src]
Creates a new instance of Hamming struct with an internal state for the metric methods to reuse.
Example
use eddie::Hamming; let hamming = Hamming::new();
pub fn distance(&self, str1: &str, str2: &str) -> Option<usize>
[src]
Distance metric. Returns a number of positions at wich string characters are different.
Returns None
if strings have different lengths.
Example
let dist1 = hamming.distance("martha", "marhta"); assert_eq!(dist1, Some(2)); let dist2 = hamming.distance("martha", "march"); assert_eq!(dist2, None);
pub fn rel_dist(&self, str1: &str, str2: &str) -> Option<f64>
[src]
Relative distance metric. Returns a distance relative to the string length, ranging from 0.0 (equality) to 1.0 (nothing in common).
Returns None
if strings have different lengths.
Example
let dist1 = hamming.rel_dist("martha", "marhta")?; assert!((dist1 - 0.333).abs() < 0.001); let dist2 = hamming.rel_dist("martha", "march"); assert_eq!(dist2, None);
pub fn similarity(&self, str1: &str, str2: &str) -> Option<f64>
[src]
Similarity metric. Inversion of relative distance, ranging from 1.0 (equality) to 0.0 (nothing in common).
Returns None
if strings have different lengths.
Example
let sim1 = hamming.similarity("martha", "marhta")?; assert!((sim1 - 0.666).abs() < 0.001); let sim2 = hamming.similarity("martha", "march"); assert_eq!(sim2, None);
Auto Trait Implementations
impl !RefUnwindSafe for Hamming
impl Send for Hamming
impl !Sync for Hamming
impl Unpin for Hamming
impl UnwindSafe for Hamming
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = !
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,