#hash-map #map #two-way #bidirectional #multimap

bisetmap

双值映射Map是一种快速且线程安全的双向集合哈希映射。它最适合需要唯一关联两列的情况。每个键关联一个或多个其他唯一值。结构内部可变,所有操作都是线程安全的。每个克隆提供对相同底层数据的访问。还实现了从serde的序列化和反序列化。

7 个版本

使用旧Rust 2015

0.1.6 2017年11月9日
0.1.5 2017年11月9日

#2256数据结构

Download history 18/week @ 2024-02-25 144/week @ 2024-03-03 50/week @ 2024-03-10 127/week @ 2024-03-17 39/week @ 2024-03-24 105/week @ 2024-03-31 121/week @ 2024-04-07 97/week @ 2024-04-14 140/week @ 2024-04-21 233/week @ 2024-04-28 352/week @ 2024-05-05 221/week @ 2024-05-12 272/week @ 2024-05-19 288/week @ 2024-05-26 222/week @ 2024-06-02 310/week @ 2024-06-09

1,092 每月下载量
用于 mapped_futures

MIT 许可证

21KB
229

crates.io Documentation

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