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
use crate::de::Deserializer;
use crate::error::Result;
use crate::ser::Serializer;
use alloc::fmt::Write;
use alloc::string::String;
use alloc::vec::Vec;
use serde::{Deserialize, Serialize};
pub fn from_str<'de, T>(s: &'de str) -> Result<T>
where
T: Deserialize<'de>,
{
let mut deserializer = Deserializer::from_str(s);
T::deserialize(&mut deserializer)
}
pub fn from_slice<'de, T>(s: &'de [u8]) -> Result<T>
where
T: Deserialize<'de>,
{
from_str(core::str::from_utf8(s)?)
}
pub fn to_string<T: ?Sized>(value: &T) -> Result<String>
where
T: Serialize,
{
let mut writer = String::new();
to_writer(&mut writer, value)?;
Ok(writer)
}
pub fn to_vec<T: ?Sized>(value: &T) -> Result<Vec<u8>>
where
T: Serialize,
{
Ok(to_string(value)?.into_bytes())
}
pub fn to_writer<W, T: ?Sized>(writer: W, value: &T) -> Result<()>
where
W: Write,
T: Serialize,
{
let mut ser = Serializer::new(writer);
value.serialize(&mut ser)?;
Ok(())
}