use std::collections::BTreeMap;
use qubit_value::Value;
use qubit_value::ValueWirePayloadRefV1;
use serde::Serialize;
use serde::Serializer;
use serde::ser::Error as SerError;
use serde::ser::SerializeMap;
pub(crate) struct MetadataWireValuesRef<'a>(pub(crate) &'a BTreeMap<String, Value>);
impl Serialize for MetadataWireValuesRef<'_> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let mut values = serializer.serialize_map(Some(self.0.len()))?;
for (key, value) in self.0 {
let payload = ValueWirePayloadRefV1::try_from(value).map_err(<S::Error as SerError>::custom)?;
values.serialize_entry(key, &payload)?;
}
values.end()
}
}