use crate::observer::{Observer, dataset::ObserverDataset, error_model::ObsErrorModel};
#[derive(serde::Serialize, serde::Deserialize)]
struct ObserverDatasetSerde {
custom_observers: Vec<Observer>,
mpc_error_model: Option<ObsErrorModel>,
}
impl serde::Serialize for ObserverDataset {
fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
ObserverDatasetSerde {
custom_observers: self.custom_observers.clone(),
mpc_error_model: self.mpc_error_model,
}
.serialize(serializer)
}
}
impl<'de> serde::Deserialize<'de> for ObserverDataset {
fn deserialize<D: serde::Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
let proxy = ObserverDatasetSerde::deserialize(deserializer)?;
Ok(ObserverDataset::new(
proxy.custom_observers,
proxy.mpc_error_model,
))
}
}