1#![cfg_attr(not(test), no_std)]
2
3#[macro_use]
4extern crate delog;
5generate_macros!();
6
7use serde_core as serde;
8
9pub(crate) mod consts;
10pub mod de;
11pub mod error;
12pub mod ser;
13
14pub use error::{Error, Result};
15use ser::Writer;
16
17pub fn cbor_serialize_to<T: ?Sized + serde::Serialize, W: Writer>(
21 object: &T,
22 writer: W,
23) -> Result<usize> {
24 let mut serializer = ser::Serializer::new(writer);
25 object.serialize(&mut serializer)?;
26 Ok(serializer.written())
27}
28
29pub fn cbor_serialize<'a, T: ?Sized + serde::Serialize>(
31 object: &T,
32 buffer: &'a mut [u8],
33) -> Result<&'a [u8]> {
34 let mut buf = &mut *buffer;
35 let written = cbor_serialize_to(object, &mut buf)?;
36 Ok(&buffer[..written])
37}
38
39pub fn cbor_deserialize<'de, T: serde::Deserialize<'de>>(buffer: &'de [u8]) -> Result<T> {
40 de::from_bytes(buffer)
42}