use crate::{Category, Source};
pub struct JsonStr {
name: String,
bytes: String,
}
impl JsonStr {
pub fn new(name: impl Into<String>, json: impl Into<String>) -> Self {
Self {
name: name.into(),
bytes: json.into(),
}
}
}
impl Source for JsonStr {
fn name(&self) -> &str {
&self.name
}
fn category(&self) -> Category {
Category::File
}
fn deserialize(
&self,
seed: &mut dyn for<'de> FnMut(
&mut dyn erased_serde::Deserializer<'de>,
) -> Result<(), erased_serde::Error>,
) -> Result<(), erased_serde::Error> {
let mut json_de = serde_json::Deserializer::from_str(&self.bytes);
let mut erased = <dyn erased_serde::Deserializer>::erase(&mut json_de);
seed(&mut erased)
}
}