chain-map 0.1.0

A chain of maps with a single view into the aggregated values.
Documentation
# chain-map

The `ChainMap` type groups a chain of `HashMap`s together in precedence
order and provides a single, unified view into the values. The semantics
for keys are the same as for a `HashMap`, however the value associated
with a given key is the value of that key in the highest-precedence map
that contains the key.

### Rust Version

This version of chain-map requires Rust 1.31 or later.

## Precedence

Maps added to the `ChainMap` earlier have precedence over those added
later. So the first map added to the chain will have the highest
precedence, while the most recent map added will have the lowest.

## Performance

Each read of the `ChainMap` will read the chain of maps in order, so each
operation will complete in worst-case O(N), with `N` the number of maps in
the chain. As a result, this should only be used for cases where the number
of reads is low compared to the number of elements in each map.

## Examples

```rust
use std::collections::HashMap;
use chain_map::ChainMap;

let mut first_map = HashMap::new();
first_map.insert("first", 10);

let mut second_map = HashMap::new();
second_map.insert("first", 20);
second_map.insert("second", 20);

let mut third_map = HashMap::new();
third_map.insert("first", 30);
third_map.insert("second", 30);
third_map.insert("third", 30);

let mut chain: ChainMap<_, _> =
    vec![first_map, second_map, third_map].into_iter().collect();
assert_eq!(chain.get("first"), Some(&10));
assert_eq!(chain["second"], 20);
assert!(chain.contains_key("third"));
assert!(!chain.contains_key("fourth"));
```

## License

Licensed under either of

 * Apache License, Version 2.0
   ([LICENSE-APACHE]LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
 * MIT license
   ([LICENSE-MIT]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.