charms_data/
util.rs

1use anyhow::Result;
2use ciborium_io::Read;
3use core::fmt::Debug;
4use serde::{Serialize, de::DeserializeOwned};
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}