use crate::{Category, Source};
pub struct TomlStr {
name: String,
bytes: String,
}
impl TomlStr {
pub fn new(name: impl Into<String>, toml: impl Into<String>) -> Self {
Self {
name: name.into(),
bytes: toml.into(),
}
}
}
impl Source for TomlStr {
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 toml_de = toml::Deserializer::parse(&self.bytes)
.map_err(<erased_serde::Error as serde::de::Error>::custom)?;
let mut erased = <dyn erased_serde::Deserializer>::erase(toml_de);
seed(&mut erased)
}
}