axum_serde/
xml.rs

1//! # XML
2
3use crate::extractor;
4use quick_xml::de::from_reader;
5use quick_xml::se::to_writer;
6use quick_xml::{DeError, SeError};
7use serde::de::DeserializeOwned;
8use serde::Serialize;
9
10fn from_slice<T: DeserializeOwned>(s: &[u8]) -> Result<T, DeError> {
11    from_reader(s)
12}
13
14fn to_vec<T: Serialize>(value: &T) -> Result<Vec<u8>, SeError> {
15    let mut buffer = bytes::BytesMut::with_capacity(128);
16    to_writer(&mut buffer, value)?;
17    Ok(buffer.to_vec())
18}
19
20extractor!(
21    XML,
22    Xml,
23    "application/xml",
24    from_slice,
25    DeError,
26    to_vec,
27    xml_test
28);