#map #combination #set #key #elements #subset #data

subset-map

一个键为初始元素集子集的映射

9个版本

使用旧的Rust 2015

0.3.4 2020年1月29日
0.3.3 2020年1月29日
0.3.2 2018年5月3日
0.2.2 2018年5月1日
0.1.0 2018年4月30日

#1007 in 数据结构

Apache-2.0/MIT

40KB
579

subset-map

摘要

subset-map 是一种类似于映射的数据结构,其键是 SubsetMap 初始化时使用的元素组合。

元素的顺序由在 SubsetMap 初始化时使用的元素中元素的位置定义。

SubsetMap 将元素克隆到子集中。因此,您应该考虑只使用那些您愿意赋予它们 Copy 特性的元素类型。

查找是线性的。因此,SubsetMap 应仅用于元素集不是太大的情况下。

示例

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);

功能

启用 serde 功能允许使用 serde 进行序列化和反序列化。

最近更改

  • 0.3.4
    • 添加了一个walk方法,该方法在键和值上操作
  • 0.3.3
    • 删除了一些不必要的生命周期
  • 0.3.2
    • 添加了更多迭代/遍历方法
  • 0.3.1
    • 添加了处理有效负载的方法
  • 0.3.0
    • [重大更改]: 更改API以使其更一致
  • 0.2.2
    • 修复了size函数
  • 0.2.1
    • 优化了findlookup
    • 添加了size函数以返回组合数
  • 0.2.0
    • 将MatchQuality重命名为LookupResult
    • LookupResult 也包含无匹配的情况
    • 改进了文档

许可证

subset-map 在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。

版权(2018) Christian Douven

有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT。

许可证: Apache-2.0/MIT

依赖项

~175KB