刚开始(尝试)学习Rust。如何在std :: collections :: BTreeMap中使用“bytestrings”作为键?
似乎我不能使用[u8]因为类型需要固定大小。
使用矢量,例如
BTreeMap<Vec<u8>, MyType>
......似乎很浪费。
我可以尝试将所有字节串连接到一个Vec并使用它的切片作为BTree键,但是有更好的方法吗?
答案 0 :(得分:1)
use std::collections::BTreeMap;
fn main() {
let key1 = b"1234";
let key2 = b"5678";
let mut map = BTreeMap::new();
map.insert(key1, true);
map.insert(key2, false);
println!("{}", map);
}
如您所见,[u8]
是一种没有任何大小的类型,这意味着您实际上无法存储其中一个。相反,您需要存储一个写为&[u8]
的“切片u8”作为键。在这个例子中,我刚刚创建了一些丢弃的切片,但是你的切片可能来自一些拥有的对象。