Multimap implementation for Rust

This is a sorted multimap implementation with range support for Rust. Implemented as a thin wrapper around std::collections::BTreeMap.

Example

````rust 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());

} ````

License

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.

Contribution

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.