This is a sorted multimap implementation with range support for Rust. Implemented as a thin wrapper around std::collections::BTreeMap.
extern crate multimap;
use btreemultimap::BTreeMultiMap;
fn main () {
let mut map = BTreeMultiMap::new();
map.insert(3, "a");
map.insert(5, "b");
map.insert(5, "c");
map.insert(8, "c");
map.insert(9, "d");
assert_eq!(map[3], "a");
assert_eq!(map.get(5), Some(&"b"));
assert_eq!(map.get_vec(5), Some(&vec!["b", "c"]));
for (&key, &value) in map.range((Included(&4), Included(&8))) {
println!("{}: {}", key, value);
}
let mut iter = map.range(4..=8);
assert_eq!(Some((&5, &"b")), iter.next());
assert_eq!(Some((&5, &"c")), iter.next());
assert_eq!(Some((&8, &"c")), iter.next());
assert_eq!(None, iter.next());
}
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.