作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 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/
我是一名优秀的程序员,十分优秀!