1pub fn deserialize_from_slice<O>(input: &[u8]) -> anyhow::Result<O>
7where
8 O: serde::de::DeserializeOwned,
9{
10 let deserializer = serde_json::Deserializer::from_slice(input);
11 deserialize(deserializer)
12}
13
14pub fn deserialize_from_str<O>(input: &str) -> anyhow::Result<O>
18where
19 O: serde::de::DeserializeOwned,
20{
21 let deserializer = serde_json::Deserializer::from_str(input);
22 deserialize(deserializer)
23}
24
25pub fn deserialize_from_reader<R, O>(reader: R) -> anyhow::Result<O>
29where
30 R: std::io::Read,
31 O: serde::de::DeserializeOwned,
32{
33 let deserializer = serde_json::Deserializer::from_reader(reader);
34 deserialize(deserializer)
35}
36
37pub fn deserialize<'de, R, O>(mut deserializer: serde_json::Deserializer<R>) -> anyhow::Result<O>
39where
40 R: serde_json::de::Read<'de>,
41 O: serde::de::DeserializeOwned,
42{
43 deserializer.disable_recursion_limit();
44 let deserializer = serde_stacker::Deserializer::new(&mut deserializer);
45 let result = O::deserialize(deserializer)?;
46 Ok(result)
47}