Skip to main content

rama_http_headers/
req_builder_ext.rs

1use rama_http_types::request;
2
3use crate::HeaderEncode;
4
5/// An extension trait adding "typed" methods to `http::request::Builder`.
6pub trait HttpRequestBuilderExt: self::sealed::Sealed {
7    /// Inserts the typed header into this `http::request::Builder`.
8    #[must_use]
9    fn typed_header<H>(self, header: H) -> Self
10    where
11        H: HeaderEncode;
12}
13
14impl HttpRequestBuilderExt for request::Builder {
15    fn typed_header<H>(self, header: H) -> Self
16    where
17        H: HeaderEncode,
18    {
19        if let Some(value) = header.encode_to_value() {
20            self.header(H::name(), value)
21        } else {
22            self
23        }
24    }
25}
26
27mod sealed {
28    use super::*;
29
30    pub trait Sealed: Sized {}
31    impl Sealed for request::Builder {}
32}