1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#![deny(missing_docs)]
//! # Spatium
//!
//! Spatium is a library for calcuting distances beetween sequences.
//! The library allows you to run different algorithm implementations with various parameters

//! ## Examples
//! ```
//! use spatium::edit_based::levenshtein;
//!
//! // Get default algorithm for calc levenshtein distance.
//! let alg = levenshtein::Default::default();
//! let x = [1, 2, 3];
//! let y = [1, 2, 4];
//! let distance = alg.distance(&x, &y).unwrap();
//! assert_eq!(distance, 1.0);
//!
//! // With normaliztion (normalized distance = distance / x.len())
//! let alg = levenshtein::Default::default().normalize_result(true);
//! let x = [1, 2, 3];
//! let y = [1, 2, 4];
//! let distance = alg.distance(&x, &y).unwrap();
//! assert_eq!(distance, 1.0 / 3.0);
//!
//! // Use obviously algorithm (for example recursive version)
//!
//! let alg = levenshtein::Recursive::default();
//! let x = [1, 2, 3];
//! let y = [1, 2, 4];
//! let distance = alg.distance(&x, &y).unwrap();
//! assert_eq!(distance, 1.0);
//! ```
//!
//! ## Algorithms:
//!
//! ### Edit based:
//! - [Hamming](edit_based::hamming)
//! - [Levenshtein](edit_based::levenshtein)
//! - [Damerau-Levenshtein](edit_based::damerau_levenshtein)

/// # Edit Based algorithms
pub mod edit_based;

/// # Library error class
pub mod error;

/// # Normalize distance
mod normalize;