1use crate::extractor;
4use serde::de::DeserializeOwned;
5use serde::Serialize;
6
7type CborDeError = ciborium::de::Error<std::io::Error>;
8
9extractor!(
10 CBOR,
11 Cbor,
12 "application/cbor",
13 from_slice,
14 CborDeError,
15 to_vec,
16 cbor_test
17);
18
19fn from_slice<T: DeserializeOwned>(s: &[u8]) -> Result<T, CborDeError> {
20 ciborium::de::from_reader(s)
21}
22
23fn to_vec<T: Serialize>(value: &T) -> Result<Vec<u8>, ciborium::ser::Error<std::io::Error>> {
24 let mut vec = Vec::with_capacity(128);
25 ciborium::into_writer(value, &mut vec)?;
26 Ok(vec)
27}