9 releases
Uses old Rust 2015
0.3.4 | Jan 29, 2020 |
---|---|
0.3.3 | Jan 29, 2020 |
0.3.2 | May 3, 2018 |
0.2.2 | May 1, 2018 |
0.1.0 | Apr 30, 2018 |
#1323 in Data structures
52 downloads per month
40KB
579 lines
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
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
- added a
- 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
- fixed
- 0.2.1
- Optimized
find
andlookup
a bit - Added
size
finction to return the number of combinations
- Optimized
- 0.2.0
- Renamed MatchQuality to
LookupResult
LookupResult
also contains the no match case- improved documentation
- Renamed MatchQuality to
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
Dependencies
~170KB