strsim-rs Crates.io Crates.io build status

The normalized versions return values between 0.0 and 1.0, where 1.0 means an exact match.

There are also generic versions of the functions for non-string inputs.

Installation

strsim is available on crates.io. Add it to your Cargo.toml: toml [dependencies] strsim = "0.9.2"

Usage

Go to Docs.rs for the full documentation. You can also clone the repo, and run $ cargo doc --open.

Examples

```rust extern crate strsim;

use strsim::{hamming, levenshtein, normalizedlevenshtein, osadistance, dameraulevenshtein, normalizeddameraulevenshtein, jaro, jarowinkler};

fn main() { match hamming("hamming", "hammers") { Ok(distance) => assert_eq!(3, distance), Err(why) => panic!("{:?}", why) }

assert_eq!(levenshtein("kitten", "sitting"), 3);

assert!((normalized_levenshtein("kitten", "sitting") - 0.571).abs() < 0.001);

assert_eq!(osa_distance("ac", "cba"), 3);

assert_eq!(damerau_levenshtein("ac", "cba"), 2);

assert!((normalized_damerau_levenshtein("levenshtein", "löwenbräu") - 0.272).abs() <
        0.001);

assert!((jaro("Friedrich Nietzsche", "Jean-Paul Sartre") - 0.392).abs() <
        0.001);

assert!((jaro_winkler("cheeseburger", "cheese fries") - 0.911).abs() <
        0.001);

} ```

Using the generic versions of the functions:

```rust extern crate strsim;

use strsim::generic_levenshtein;

fn main() { asserteq!(2, genericlevenshtein(&[1, 2, 3], &[0, 2, 5])); } ```

Contributing

If you don't want to install Rust itself, you can run $ ./dev for a development CLI if you have [Docker] installed.

Benchmarks require a Nightly toolchain. Run $ cargo +nightly bench.

License

MIT