#[macro_use]
mod macros;
#[derive(serde::Serialize)]
struct BorrowedNameWrapper<'a>(#[serde(with = "crate::header_name")] &'a http::HeaderName);
#[derive(serde::Deserialize)]
#[serde(untagged)]
enum Either<T> {
One(T),
Many(Vec<T>),
}
macro_rules! doc_mod {
($ty:ty, $path:ident$(, $generic:tt)?$(; $extra:expr)?) => {
paste::paste! {
#[doc = " [`Serialize`](serde::Serialize)/[`Deserialize`](serde::Deserialize) for [`http::" $($extra)? $ty "`](http::" $($extra)? $ty ")"]
#[doc = " use http::" $($extra)? $ty ";"]
#[doc = " struct MyStruct<T"$(", " $generic )?">"]
$(#[doc = " " $generic ": Serialize + for<'a> Deserialize<'a>," ])?
#[doc = " #[serde(with = \"http_serde_ext::" $path "\")]"]
#[doc = " base: " $ty $("<" $generic ">")? ","]
#[doc = " #[serde(with = \"http_serde_ext::" $path "::option\")]"]
#[doc = " option: Option<" $ty $("<" $generic ">")? ">,"]
#[doc = " #[serde(with = \"http_serde_ext::" $path "::vec\")]"]
#[doc = " vec: Vec<" $ty $("<" $generic ">")? ">,"]
#[doc = " #[serde(with = \"http_serde_ext::" $path "::vec_deque\")]"]
#[doc = " vec_deque: VecDeque<" $ty $("<" $generic ">")? ">,"]
#[doc = " #[serde(with = \"http_serde_ext::" $path "::linked_list\")]"]
#[doc = " linked_list: LinkedList<" $ty $("<" $generic ">")? ">,"]
#[doc = " #[serde(with = \"http_serde_ext::" $path "::hash_map\")]"]
#[doc = " hash_map: HashMap<T, " $ty $("<" $generic ">")? ">,"]
#[doc = " #[serde(with = \"http_serde_ext::" $path "::btree_map\")]"]
#[doc = " btree_map: BTreeMap<T, " $ty $("<" $generic ">")? ">,"]
pub mod $path;
}
};
}
doc_mod!(Authority, authority; "uri::");
doc_mod!(HeaderMap, header_map);
doc_mod!(HeaderMap, header_map_generic, U);
doc_mod!(HeaderName, header_name);
doc_mod!(HeaderValue, header_value);
doc_mod!(Method, method);
doc_mod!(Request, request, U);
doc_mod!(Response, response, U);
doc_mod!(StatusCode, status_code);
doc_mod!(Uri, uri);
doc_mod!(Version, version);