redgold_schema/util/
cbor.rs1use crate::{ErrorInfoContext, RgResult};
2use serde::{Deserialize, Serialize};
3
4pub trait SerdeCborConverters {
5 fn to_cbor(&self) -> RgResult<Vec<u8>>;
6 fn from_cbor(payload: Vec<u8>) -> RgResult<Self> where Self: Sized;
7}
8
9impl<T> SerdeCborConverters for T where T: Serialize + for<'a> Deserialize<'a> {
10 fn to_cbor(&self) -> RgResult<Vec<u8>> {
11 let cbor = serde_cbor::to_vec(&self).error_info("cbor serialization failed")?;
12 Ok(cbor)
13 }
14
15 fn from_cbor(payload: Vec<u8>) -> RgResult<Self> {
16 let tx = serde_cbor::from_slice(&payload).error_info("cbor deserialization failed")?;
17 Ok(tx)
18 }
19}