如何使用字节数组键创建BTreeMap?

时间:2015-01-05 20:39:28

标签: rust

刚开始(尝试)学习Rust。如何在std :: collections :: BTreeMap中使用“bytestrings”作为键?

似乎我不能使用[u8]因为类型需要固定大小。

使用矢量,例如

BTreeMap<Vec<u8>, MyType>

......似乎很浪费。

我可以尝试将所有字节串连接到一个Vec并使用它的切片作为BTree键,但是有更好的方法吗?

1 个答案:

答案 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”作为键。在这个例子中,我刚刚创建了一些丢弃的切片,但是你的切片可能来自一些拥有的对象。