#hash-map #bag #heterogeneous #collection

baggie

用于存储混合/异构值的通用结构体容器

3 个不稳定版本

0.2.1 2018年12月24日
0.2.0 2018年12月24日
0.1.0 2018年12月23日

#2458 in 数据结构


用于 black-jack

MIT 许可证

8KB
60

baggie


Build Status Coverage Status

Baggie 是一个简单的接口,用于在 HashMap 中存储任何类型的元素。该包没有依赖项,并且实际上只是一个用于从 HashMap 存储和检索 Any 的辅助工具。它没有不安全代码,并且没有任何 unwraps 或类似的错误。

Baggie 实现了 HashMap 中的一组方法。

该包的缺点是您必须知道您存储的类型。通常这不应成为问题,因为您可以保留一些元数据结构,描述哪些类型属于您存储的哪些键。

有时您可能需要这样的工具,但大多数时候您应该使用枚举。 :)

use baggie::Baggie;

let mut bag = Baggie::new();

// Insert any value type you wish...
bag.insert("key1", "Value1".to_owned());
bag.insert("key2", vec!["value", "2"]);
bag.insert("key3", 3);

// Get a reference
let val3 = bag.get::<i32, _>("key3");
assert_eq!(Some(&3), val3);

// Get a mutable reference
let val2: Option<&mut Vec<&str>> = bag.get_mut("key2");
match val2 {
    Some(v) => *v = vec!["new", "value", "2"],
    None => panic!()
}
let val2: &mut Vec<&str> = bag.get_mut("key2").unwrap();
assert_eq!(val2, &mut vec!["new", "value", "2"]);

没有运行时依赖项