刚开始学生锈。如何在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片段”作为键。在这个例子中,我刚刚创建了一些丢弃的片段,但是您的片段可能来自某个拥有的对象。

07-24 21:37