7 个版本
使用旧Rust 2015
0.1.6 | 2017年11月9日 |
---|---|
0.1.5 | 2017年11月9日 |
#2256 在 数据结构
1,092 每月下载量
用于 mapped_futures
21KB
229 行
BisetMap
BisetMap是Rust中快速且线程安全的双向集合哈希映射。最适合需要唯一关联两列的情况。每个键关联一个或多个其他唯一值。
结构内部可变,所有操作都是线程安全的。每个克隆提供对相同底层数据的访问。还实现了从serde的序列化和反序列化。
用法
要在Rust项目中使用BisetMap,请将 bisetmap = 0.1
添加到 Cargo.toml
的依赖部分。有关更多详细信息和方法示例,请参阅文档。
示例
use bisetmap::BisetMap;
let subscriptions = BisetMap::new();
// insert client-ids and subscription topics
subscriptions.insert("Bob", "Tech");
subscriptions.insert("Bob", "Math");
subscriptions.insert("Alice", "Tech");
subscriptions.insert("Alice", "Romance");
// retrieve topic by client-id (left to right)
assert_eq!(subscriptions.get(&"Bob"), ["Math", "Tech"]);
assert_eq!(subscriptions.get(&"Alice"), ["Romance", "Tech"]);
// retrieve clients by topic (right to left)
assert_eq!(subscriptions.rev_get(&"Tech"), ["Alice", "Bob"]);
assert_eq!(subscriptions.rev_get(&"Math"), ["Bob"]);
// check membership
assert!(subscriptions.contains(&"Bob", &"Math"));
assert!(!subscriptions.contains(&"Bob", &"Romance"));
// check key/value existence
assert!(subscriptions.key_exists(&"Alice"));
assert!(subscriptions.value_exists(&"Tech"));
许可证
BisetMap遵循MIT许可证。
依赖项
~105–345KB