1#[cfg(feature = "simd")]
6pub use simd_json::json;
7#[cfg(feature = "simd")]
8pub use simd_json::BorrowedValue;
9#[cfg(feature = "simd")]
10pub use simd_json::Error;
11#[cfg(feature = "simd")]
12pub use simd_json::OwnedValue as Value;
13
14#[cfg(all(not(feature = "simd"), feature = "serde"))]
15pub use serde_json::json;
16#[cfg(all(not(feature = "simd"), feature = "serde"))]
17pub use serde_json::Error;
18#[cfg(all(not(feature = "simd"), feature = "serde"))]
19pub use serde_json::Value;
20
21use serde::de::DeserializeOwned;
22use serde::{Deserialize, Serialize};
23
24#[cfg(feature = "simd")]
25pub fn from_str<T: DeserializeOwned>(json: &str) -> Result<T, Error> {
31 let mut buffer = json.as_bytes().to_vec();
35 simd_json::from_slice(&mut buffer)
36}
37
38#[cfg(all(not(feature = "simd"), feature = "serde"))]
39pub fn from_str<T: DeserializeOwned>(json: &str) -> Result<T, Error> {
45 serde_json::from_str(json)
46}
47
48#[cfg(feature = "simd")]
49pub fn to_string<T: Serialize>(value: &T) -> Result<String, Error> {
55 simd_json::to_string(value)
56}
57
58#[cfg(all(not(feature = "simd"), feature = "serde"))]
59pub fn to_string<T: Serialize>(value: &T) -> Result<String, Error> {
65 serde_json::to_string(value)
66}
67
68#[cfg(feature = "simd")]
69pub fn to_value<T: Serialize>(value: T) -> Result<Value, Error> {
75 let mut bytes = simd_json::to_vec(&value)?;
76 simd_json::from_slice(&mut bytes)
77}
78
79#[cfg(feature = "simd")]
80pub fn to_borrowed_value(json: &mut [u8]) -> Result<BorrowedValue<'_>, Error> {
86 simd_json::to_borrowed_value(json)
87}
88
89#[cfg(feature = "simd")]
90pub fn from_value<T: DeserializeOwned>(value: Value) -> Result<T, Error> {
96 T::deserialize(value)
97}
98
99#[cfg(feature = "simd")]
100pub fn from_slice_mut<'a, T: Deserialize<'a>>(json: &'a mut [u8]) -> Result<T, Error> {
108 simd_json::from_slice(json)
109}
110
111#[cfg(feature = "simd")]
112pub fn from_borrowed_value<'a, T: Deserialize<'a>>(value: BorrowedValue<'a>) -> Result<T, Error> {
118 T::deserialize(value)
119}
120
121#[cfg(all(not(feature = "simd"), feature = "serde"))]
122pub fn to_value<T: Serialize>(value: T) -> Result<Value, Error> {
128 serde_json::to_value(value)
129}
130
131#[cfg(all(not(feature = "simd"), feature = "serde"))]
132pub fn from_slice_mut<T: DeserializeOwned>(json: &mut [u8]) -> Result<T, Error> {
138 serde_json::from_slice(json)
139}