gpt4 book ai didi

serialization - 将字符串或枚举放入 LMDB

转载 作者:行者123 更新时间:2023-11-29 08:06:13 26 4
gpt4 key购买 nike

我想使用 the 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 写入数据库,但这会降低性能。

最佳答案

您将不得不使用一些 序列化格式,因为您不能直接放置表示MyEnum 的位。在内存中写入数据库(因为枚举和 String 的内部实现在 Rust 版本中可能不稳定,并且 String 至少在内部使用指针)。

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

关于serialization - 将字符串或枚举放入 LMDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45398971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com