mincode/
lib.rs

1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8mod de;
9mod error;
10mod ser;
11
12#[cfg(test)]
13mod tests;
14
15use std::io;
16
17use serde::Deserialize;
18use serde::Serialize;
19
20use self::de::Deserializer;
21pub use self::error::Error;
22pub use self::error::Result;
23use self::ser::Serializer;
24
25pub fn serialize<T>(value: &T) -> Result<Vec<u8>>
26where
27    T: Serialize,
28{
29    let mut out = Vec::new();
30    serialize_into(&mut out, value)?;
31    Ok(out)
32}
33
34pub fn serialize_into<W, T: ?Sized>(writer: W, value: &T) -> Result<()>
35where
36    W: io::Write,
37    T: Serialize,
38{
39    let mut ser = Serializer::new(writer);
40    Serialize::serialize(value, &mut ser)
41}
42
43pub fn deserialize<'de, T>(bytes: &'de [u8]) -> Result<T>
44where
45    T: Deserialize<'de>,
46{
47    let mut de = Deserializer::new(bytes);
48    Deserialize::deserialize(&mut de)
49}