3 个不稳定版本
0.2.1 | 2018年12月24日 |
---|---|
0.2.0 | 2018年12月24日 |
0.1.0 | 2018年12月23日 |
#2458 in 数据结构
用于 black-jack
8KB
60 行
baggie
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"]);