subset-map 0.3.4

A map where the keys are subsets of an initial set of elements
Documentation
# subset-map

## Summary

`subset-map` is a map like data structure where the keys are combinations
of elements the `SubsetMap` has been initialized with.

The order of the elements is defined by the position of an element
within the elements the `SubsetMap` has been initialized with.

`SubsetMap` clones the elements into the subsets. So you should
consider to only use element types where you would feel good to assign
them the `Copy` trait.

Lookup is done linearly. Therefore `SubsetMap` should only be used
with not too big sets of elements.

### Example

```rust
use subset_map::*;
// Initialize the map where the payloads are basically the keys
let subset_map = SubsetMap::fill(&[1, 2, 3], |x| x.iter().cloned().collect::<Vec<_>>());

assert_eq!(subset_map.get(&[1]), Some(&vec![1]));
assert_eq!(subset_map.get(&[2]), Some(&vec![2]));
assert_eq!(subset_map.get(&[3]), Some(&vec![3]));
assert_eq!(subset_map.get(&[1, 2]), Some(&vec![1, 2]));
assert_eq!(subset_map.get(&[2, 3]), Some(&vec![2, 3]));
assert_eq!(subset_map.get(&[1, 3]), Some(&vec![1, 3]));
assert_eq!(subset_map.get(&[1, 2, 3]), Some(&vec![1, 2, 3]));

// No internal ordering is performed:
// The position in the original set is crucial:
assert_eq!(subset_map.get(&[2,1]), None);
```

## Features

The `serde` feature allows serialization and deserialization with `serde`.

Recent Changes

* 0.3.4
    * added a`walk` method which operates on keys and values
* 0.3.3
    * removed some unnecessary lifetimes
* 0.3.2
    * Added more methods to iterate/walk
* 0.3.1
    * Added methods to work with payloads
* 0.3.0
    * [BREAKING CHANGES]: Changed API to be more consistent
* 0.2.2
    * fixed `size` function
* 0.2.1
    * Optimized `find` and `lookup` a bit
    * Added `size` finction to return the number of combinations
* 0.2.0
    * Renamed MatchQuality to `LookupResult`
    * `LookupResult` also contains the no match case
    * improved documentation

## License

`subset-map` is distributed under the terms of both the MIT license and the Apache License (Version
2.0).

Copyright(2018) Christian Douven

See LICENSE-APACHE and LICENSE-MIT for details.

License: Apache-2.0/MIT