Remove custom implementation of BytesEncode/Decode for the FieldId

This commit is contained in:
Loïc Lecrenier 2022-07-04 08:41:54 +02:00
parent 80b962b4f4
commit 4f0bd317df
3 changed files with 7 additions and 32 deletions

View file

@ -1,28 +0,0 @@
use std::borrow::Cow;
use std::convert::TryInto;
use heed::zerocopy::AsBytes;
use crate::{FieldId, BEU16};
pub struct FieldIdCodec;
impl<'a> heed::BytesDecode<'a> for FieldIdCodec {
type DItem = FieldId;
fn bytes_decode(bytes: &'a [u8]) -> Option<Self::DItem> {
let bytes: [u8; 2] = bytes[..2].try_into().ok()?;
let field_id = BEU16::from(bytes).get();
Some(field_id)
}
}
impl<'a> heed::BytesEncode<'a> for FieldIdCodec {
type EItem = FieldId;
fn bytes_encode(field_id: &Self::EItem) -> Option<Cow<[u8]>> {
let field_id = BEU16::new(*field_id);
let bytes = field_id.as_bytes();
Some(Cow::Owned(bytes.to_vec()))
}
}

View file

@ -5,7 +5,9 @@ mod facet_string_level_zero_value_codec;
mod facet_string_zero_bounds_value_codec;
mod field_doc_id_facet_f64_codec;
mod field_doc_id_facet_string_codec;
mod field_id_codec;
use crate::BEU16;
use heed::types::OwnedType;
pub use self::facet_level_value_f64_codec::FacetLevelValueF64Codec;
pub use self::facet_level_value_u32_codec::FacetLevelValueU32Codec;
@ -16,7 +18,8 @@ pub use self::facet_string_level_zero_value_codec::{
pub use self::facet_string_zero_bounds_value_codec::FacetStringZeroBoundsValueCodec;
pub use self::field_doc_id_facet_f64_codec::FieldDocIdFacetF64Codec;
pub use self::field_doc_id_facet_string_codec::FieldDocIdFacetStringCodec;
pub use self::field_id_codec::FieldIdCodec;
pub type FieldIdCodec = OwnedType<BEU16>;
/// Tries to split a slice in half at the given middle point,
/// `None` if the slice is too short.