#dynamic #key #object

any_key

Dynamically typed keys for associative arrays

2 releases

Uses old Rust 2015

0.1.1 Nov 6, 2017
0.1.0 Aug 29, 2017

#931 in Data structures

Download history 220/week @ 2022-08-10 135/week @ 2022-08-17 79/week @ 2022-08-24 211/week @ 2022-08-31 361/week @ 2022-09-07 297/week @ 2022-09-14 235/week @ 2022-09-21 300/week @ 2022-09-28 338/week @ 2022-10-05 1286/week @ 2022-10-12 3546/week @ 2022-10-19 3213/week @ 2022-10-26 2193/week @ 2022-11-02 1475/week @ 2022-11-09 1176/week @ 2022-11-16 914/week @ 2022-11-23

6,235 downloads per month
Used in 4 crates (2 directly)

MIT/Apache

9KB
177 lines

any_key

Documentation Crates.io Travis CI Build Status

Documentation for the master branch

Dynamically typed keys for associative arrays.


lib.rs:

Dynamically typed keys for associative arrays.

Example

use std::collections::{BTreeMap, HashMap};
use any_key::{AnyHash, AnyOrd};

#[derive(PartialEq, Eq, Hash, PartialOrd, Ord)]
struct Foo;

// AnyHash can be used as a key for HashMap-like types
let mut map = HashMap::new();
map.insert(Box::new("hello") as Box<AnyHash>, 1);
map.insert(Box::new(42) as Box<AnyHash>, 2);
map.insert(Box::new(Foo) as Box<AnyHash>, 3);
assert_eq!(map.get(&(Box::new("hello") as Box<AnyHash>)), Some(&1));
assert_eq!(map.get(&(Box::new(42) as Box<AnyHash>)), Some(&2));
assert_eq!(map.get(&(Box::new(Foo) as Box<AnyHash>)), Some(&3));

// AnyOrd can be used as a key for HashMap-like types
let mut map = BTreeMap::new();
map.insert(Box::new("hello") as Box<AnyOrd>, 1);
map.insert(Box::new(42) as Box<AnyOrd>, 2);
map.insert(Box::new(Foo) as Box<AnyOrd>, 3);
assert_eq!(map.get(&(Box::new("hello") as Box<AnyOrd>)), Some(&1));
assert_eq!(map.get(&(Box::new(42) as Box<AnyOrd>)), Some(&2));
assert_eq!(map.get(&(Box::new(Foo) as Box<AnyOrd>)), Some(&3));

Dependencies

~32KB