milli_core/heed_codec/
obkv_codec.rs1use std::borrow::Cow;
2
3use heed::BoxedError;
4use obkv::{KvReaderU16, KvWriterU16};
5
6pub struct ObkvCodec;
7
8impl<'a> heed::BytesDecode<'a> for ObkvCodec {
9 type DItem = &'a KvReaderU16;
10
11 fn bytes_decode(bytes: &'a [u8]) -> Result<Self::DItem, BoxedError> {
12 Ok(KvReaderU16::from_slice(bytes))
13 }
14}
15
16impl heed::BytesEncode<'_> for ObkvCodec {
17 type EItem = KvWriterU16<Vec<u8>>;
18
19 fn bytes_encode(item: &Self::EItem) -> Result<Cow<'_, [u8]>, BoxedError> {
20 item.clone().into_inner().map(Cow::Owned).map_err(Into::into)
21 }
22}