刚开始学生锈。如何在std::collections::BTreeMap中将“bytestrings”用作键?
似乎我不能使用[u8],因为该类型需要固定的大小。
使用向量,例如。
BTreeMap<Vec<u8>, MyType>
…看起来很浪费。
我可以尝试将所有的bytestring合并到一个Vec中,并使用其中的片段作为BTree键,但是有没有更好的方法来这样做呢?
最佳答案
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]
的“u8s片段”作为键。在这个例子中,我刚刚创建了一些丢弃的片段,但是您的片段可能来自某个拥有的对象。