serde_valid/features/toml/
from_toml_reader.rs1pub trait FromTomlReader
2where
3 Self: Sized,
4{
5 fn from_toml_reader<R>(reader: R) -> Result<Self, crate::Error<serde_toml::de::Error>>
24 where
25 R: std::io::Read;
26}
27
28impl<T> FromTomlReader for T
29where
30 T: serde::de::DeserializeOwned + crate::Validate,
31{
32 fn from_toml_reader<R>(reader: R) -> Result<Self, crate::Error<serde_toml::de::Error>>
33 where
34 R: std::io::Read,
35 {
36 use serde::de::Error;
37
38 let mut buffer = String::new();
39 let mut reader = reader;
40 reader
41 .read_to_string(&mut buffer)
42 .map_err(serde_toml::de::Error::custom)?;
43
44 let model: T = serde_toml::from_str(&buffer)?;
45 model.validate().map_err(crate::Error::ValidationError)?;
46 Ok(model)
47 }
48}