1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#![forbid(missing_docs)]
#![forbid(unsafe_code)]
mod error_ext; pub use error_ext::*;
mod map; pub use map::Map;
mod reader; pub(crate) use reader::*;
mod settings; pub use settings::*;
mod shared; pub(crate) use shared::*;
pub mod spanned; pub use spanned::Spanned;
mod stream_deserializer; pub use stream_deserializer::StreamDeserializer;
mod value; pub use value::Value;
#[cfg(test)] mod tests;
use serde_json::error as sje;
use serde::de;
use std::sync::Arc;
pub fn from_slice_with_settings<T: de::DeserializeOwned>(buf: &[u8], settings: &Settings) -> sje::Result<T> {
let shared = Arc::new(Shared::new(settings));
let _shared_stack = SharedStack::push(shared.clone());
serde_json::from_reader(Reader::new(buf, shared))
}
pub fn from_slice<T: de::DeserializeOwned>(buf: &[u8]) -> sje::Result<T> {
from_slice_with_settings(buf, &Settings::default())
}
pub fn from_str_with_settings<T: de::DeserializeOwned>(buf: &str, settings: &Settings) -> sje::Result<T> {
from_slice_with_settings(buf.as_bytes(), settings)
}
pub fn from_str<T: de::DeserializeOwned>(buf: &str) -> sje::Result<T> {
from_slice(buf.as_bytes())
}