ringhash 0.1.1

Consistent hashing implementation
Documentation
# ringhash

[![Crates.io][crates-badge]][crates-url]
[![License][license-badge]][license-url]
[![Build Status][actions-badge]][actions-url]

[crates-badge]: https://img.shields.io/crates/v/ringhash.svg
[crates-url]: https://crates.io/crates/ringhash
[license-badge]: https://img.shields.io/crates/l/ringhash.svg
[license-url]: #license
[actions-badge]: https://github.com/Millione/ringhash/actions/workflows/ci.yaml/badge.svg
[actions-url]: https://github.com/Millione/ringhash/actions

Consistent hashing implementation.

## Usage

Add this to your `Cargo.toml`:

```toml
[dependencies]
ringhash = "0.1"
```

## Example
```rust
use ringhash::Consistent;

fn main() {
    let c = Consistent::new();
    c.add("cacheA");
    c.add("cacheB");
    c.add("cacheC");
    let users = vec![
        "user_mcnulty",
        "user_bunk",
        "user_omar",
        "user_bunny",
        "user_stringer",
    ];
    println!("initial state [A, B, C]");
    for u in users.iter() {
        let server = c.get(u).unwrap();
        println!("{} => {}", u, server);
    }
    c.add("cacheD");
    c.add("cacheE");
    println!("with cacheD, cacheE added [A, B, C, D, E]");
    for u in users.iter() {
        let server = c.get(u).unwrap();
        println!("{} => {}", u, server);
    }
    c.remove("cacheC");
    println!("with cacheC removed [A, B, D, E]");
    for u in users.iter() {
        let server = c.get(u).unwrap();
        println!("{} => {}", u, server);
    }
}
```

## License

Dual-licensed under the MIT license and the Apache License (Version 2.0).

See [LICENSE-MIT](https://github.com/Millione/ringhash/blob/main/LICENSE-MIT) and [LICENSE-APACHE](https://github.com/Millione/ringhash/blob/main/LICENSE-APACHE) for details.