use std::marker::PhantomData;
use serde::Deserialize;
use serde::Deserializer;
use serde::Serialize;
use serde::de::DeserializeSeed;
use super::MetadataSchemaWireV1Seed;
use crate::UnknownFilterFieldPolicy;
use crate::UnknownMetadataFieldPolicy;
pub(crate) const METADATA_SCHEMA_WIRE_VERSION_V1: u8 = 1;
#[derive(Serialize)]
#[serde(deny_unknown_fields)]
pub(crate) struct MetadataSchemaWireV1<F> {
pub(crate) version: u8,
pub(crate) fields: F,
pub(crate) unknown_metadata_field_policy: UnknownMetadataFieldPolicy,
pub(crate) unknown_filter_field_policy: UnknownFilterFieldPolicy,
}
impl<'de, F> Deserialize<'de> for MetadataSchemaWireV1<F>
where
F: Deserialize<'de>,
{
#[inline]
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
MetadataSchemaWireV1Seed::new(PhantomData::<F>).deserialize(deserializer)
}
}