charms_data/util.rs
1use anyhow::Result;
2use ciborium_io::Read;
3use core::fmt::Debug;
4use serde::{de::DeserializeOwned, Serialize};
5
6/// Deserialize a CBOR value from a reader (e.g. `&[u8]` or `std::io::stdin()`).
7pub fn read<T, R>(s: R) -> Result<T>
8where
9 T: DeserializeOwned,
10 R: Read,
11 R::Error: Debug + Send + Sync + 'static,
12{
13 Ok(ciborium::from_reader(s)?)
14}
15
16/// Serialize a value to a byte vector as CBOR.
17pub fn write<T>(t: &T) -> Result<Vec<u8>>
18where
19 T: Serialize,
20{
21 let mut buf = vec![];
22 ciborium::into_writer(t, &mut buf)?;
23 Ok(buf)
24}