将字符串或枚举放入LMDB

5比9

我想使用lmdb crate将一些数据写入数据库我正在写一个枚举:

enum MyEnum {
    A { astr: String, bstr: String },
    B { i: u32 },
    C,
}

put功能lmdb::RwTransaction具有以下定义:

fn put<K, D>(
    &mut self,
    database: Database,
    key: &K,
    data: &D,
    flags: WriteFlags,
) -> Result<()>
where
    K: AsRef<[u8]>,
    D: AsRef<[u8]>,

MyEnum::A由于未实现,如何将其放入数据库AsRef<[u8]>

我可以将数据转换为JSON并将该JSON写入数据库,但这会降低性能。

弗洛里安·韦默(Florian Weimer)

您将必须使用某种序列化格式,因为您无法将表示MyEnum内存中的位直接放入数据库中(因为枚举的内部实现,并且String在Rust版本之间可能不稳定,并且String至少在内部使用了指针)。

您不必专门使用JSON。(JSON确实效率很低。)您可以选择serde支持的其他功能(它似乎是Rust的事实上的类型定向序列化库)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章