tmc_langs_util/
deserialize.rs1use crate::{JsonError, TomlError, YamlError};
4use serde::de::DeserializeOwned;
5use serde_json::Value;
6use std::io::Read;
7
8pub fn json_from_str<T: DeserializeOwned>(json: &str) -> Result<T, JsonError> {
9 let de = &mut serde_json::Deserializer::from_str(json);
10 let res = serde_path_to_error::deserialize(de)?;
11 Ok(res)
12}
13
14pub fn json_from_reader<T: DeserializeOwned>(json: impl Read) -> Result<T, JsonError> {
15 let de = &mut serde_json::Deserializer::from_reader(json);
16 let res = serde_path_to_error::deserialize(de)?;
17 Ok(res)
18}
19
20pub fn json_from_slice<T: DeserializeOwned>(json: &[u8]) -> Result<T, JsonError> {
21 let de = &mut serde_json::Deserializer::from_slice(json);
22 let res = serde_path_to_error::deserialize(de)?;
23 Ok(res)
24}
25
26pub fn json_from_value<T: DeserializeOwned>(json: Value) -> Result<T, JsonError> {
27 let res = serde_path_to_error::deserialize(json)?;
28 Ok(res)
29}
30
31pub fn toml_from_str<T: DeserializeOwned>(toml: &str) -> Result<T, TomlError> {
32 let de = toml::Deserializer::parse(toml)?;
33 let res = serde_path_to_error::deserialize(de)?;
34 Ok(res)
35}
36
37pub fn yaml_from_str<T: DeserializeOwned>(yaml: &str) -> Result<T, YamlError> {
38 let de = serde_yaml::Deserializer::from_str(yaml);
39 let res = serde_path_to_error::deserialize(de)?;
40 Ok(res)
41}
42
43pub fn yaml_from_reader<T: DeserializeOwned>(yaml: impl Read) -> Result<T, YamlError> {
44 let de = serde_yaml::Deserializer::from_reader(yaml);
45 let res = serde_path_to_error::deserialize(de)?;
46 Ok(res)
47}
48
49pub fn yaml_from_slice<T: DeserializeOwned>(yaml: &[u8]) -> Result<T, YamlError> {
50 let de = serde_yaml::Deserializer::from_slice(yaml);
51 let res = serde_path_to_error::deserialize(de)?;
52 Ok(res)
53}