axum_serde/
cbor.rs

1//! # CBOR
2
3use 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}