Make the deserialization support correctly optional documents

This commit is contained in:
Clément Renault 2019-11-05 15:03:18 +01:00
parent a127b72a74
commit 68c0a36b00
No known key found for this signature in database
GPG key ID: 92ADA4E935E71FA4
3 changed files with 109 additions and 13 deletions

View file

@ -22,7 +22,7 @@ use std::collections::HashSet;
use heed::Result as ZResult;
use meilidb_schema::{Schema, SchemaAttr};
use serde::de;
use serde::de::{self, Deserialize};
use zerocopy::{AsBytes, FromBytes};
use crate::criterion::Criteria;
@ -120,9 +120,7 @@ impl Index {
attributes: attributes.as_ref(),
};
// TODO: currently we return an error if all document fields are missing,
// returning None would have been better
Ok(T::deserialize(&mut deserializer).map(Some)?)
Ok(Option::<T>::deserialize(&mut deserializer)?)
}
pub fn document_attribute<T: de::DeserializeOwned>(