Struct trillium_client::Headers
pub struct Headers { /* private fields */ }
Expand description
Trillium’s header map type
Implementations§
§impl Headers
impl Headers
pub fn with_capacity(capacity: usize) -> Headers
pub fn with_capacity(capacity: usize) -> Headers
Construct a new Headers, expecting to see at least this many known headers.
pub fn reserve(&mut self, additional: usize)
pub fn reserve(&mut self, additional: usize)
Extend the capacity of the known headers map by this many
pub fn iter(&self) -> Iter<'_>
pub fn iter(&self) -> Iter<'_>
Return an iterator over borrowed header names and header values. First yields the known headers and then the unknown headers, if any.
pub fn len(&self) -> usize
pub fn len(&self) -> usize
How many unique HeaderName
have been added to these Headers
?
Note that each header name may have more than one HeaderValue
.
pub fn append(
&mut self,
name: impl Into<HeaderName<'static>>,
value: impl Into<HeaderValues>
)
pub fn append( &mut self, name: impl Into<HeaderName<'static>>, value: impl Into<HeaderValues> )
add the header value or header values into this header map. If
there is already a header with the same name, the new values
will be added to the existing ones. To replace any existing
values, use Headers::insert
pub fn append_all(&mut self, other: Headers)
pub fn append_all(&mut self, other: Headers)
pub fn insert_all(&mut self, other: Headers)
pub fn insert_all(&mut self, other: Headers)
Combine two Headers
, replacing any existing header values
pub fn insert(
&mut self,
name: impl Into<HeaderName<'static>>,
value: impl Into<HeaderValues>
)
pub fn insert( &mut self, name: impl Into<HeaderName<'static>>, value: impl Into<HeaderValues> )
Add a header value or header values into this header map. If a
header already exists with the same name, it will be
replaced. To combine, see Headers::append
pub fn try_insert(
&mut self,
name: impl Into<HeaderName<'static>>,
value: impl Into<HeaderValues>
)
pub fn try_insert( &mut self, name: impl Into<HeaderName<'static>>, value: impl Into<HeaderValues> )
Add a header value or header values into this header map if and only if there is not already a header with the same name.
pub fn get_str<'a>(&self, name: impl Into<HeaderName<'a>>) -> Option<&str>
pub fn get_str<'a>(&self, name: impl Into<HeaderName<'a>>) -> Option<&str>
Retrieves a &str header value if there is at least one header
in the map with this name. If there are several headers with
the same name, this follows the behavior defined at
HeaderValues::one
. Returns None if there is no header with
the provided header name.
pub fn get<'a>(&self, name: impl Into<HeaderName<'a>>) -> Option<&HeaderValue>
pub fn get<'a>(&self, name: impl Into<HeaderName<'a>>) -> Option<&HeaderValue>
Retrieves a singular header value from this header map. If
there are several headers with the same name, this follows the
behavior defined at HeaderValues::one
. Returns None if there is no header with the provided header name
pub fn remove<'a>(
&mut self,
name: impl Into<HeaderName<'a>>
) -> Option<HeaderValues>
pub fn remove<'a>( &mut self, name: impl Into<HeaderName<'a>> ) -> Option<HeaderValues>
Takes all headers with the provided header name out of this header map and returns them. Returns None if the header did not have an entry in this map.
pub fn get_values<'a>(
&self,
name: impl Into<HeaderName<'a>>
) -> Option<&HeaderValues>
pub fn get_values<'a>( &self, name: impl Into<HeaderName<'a>> ) -> Option<&HeaderValues>
Retrieves a reference to all header values with the provided
header name. If you expect there to be only one value, use
Headers::get
.
pub fn has_header<'a>(&self, name: impl Into<HeaderName<'a>>) -> bool
pub fn has_header<'a>(&self, name: impl Into<HeaderName<'a>>) -> bool
Predicate function to check whether this header map contains
the provided header name. If you are using this to
conditionally insert a value, consider using
Headers::try_insert
instead.
pub fn eq_ignore_ascii_case<'a>(
&'a self,
name: impl Into<HeaderName<'a>>,
needle: &str
) -> bool
pub fn eq_ignore_ascii_case<'a>( &'a self, name: impl Into<HeaderName<'a>>, needle: &str ) -> bool
Convenience function to check whether the value contained in this header map for the provided name is ascii-case-insensitively equal to the provided comparison &str. Returns false if there is no value for the name
pub fn contains_ignore_ascii_case<'a>(
&self,
name: impl Into<HeaderName<'a>>,
needle: &str
) -> bool
pub fn contains_ignore_ascii_case<'a>( &self, name: impl Into<HeaderName<'a>>, needle: &str ) -> bool
Convenience function to check whether the value contained in this header map for the provided name. Prefer testing against a lower case string, as the implementation currently has to allocate if .
pub fn with_inserted_header(
self,
name: impl Into<HeaderName<'static>>,
values: impl Into<HeaderValues>
) -> Headers
pub fn with_inserted_header( self, name: impl Into<HeaderName<'static>>, values: impl Into<HeaderValues> ) -> Headers
Chainable method to insert a header
pub fn with_appended_header(
self,
name: impl Into<HeaderName<'static>>,
values: impl Into<HeaderValues>
) -> Headers
pub fn with_appended_header( self, name: impl Into<HeaderName<'static>>, values: impl Into<HeaderValues> ) -> Headers
Chainable method to append a header
pub fn without_header(self, name: impl Into<HeaderName<'static>>) -> Headers
pub fn without_header(self, name: impl Into<HeaderName<'static>>) -> Headers
Chainable method to remove a header
pub fn without_headers<I, H>(self, names: I) -> Headers
pub fn without_headers<I, H>(self, names: I) -> Headers
Chainable method to remove multiple headers by name
pub fn remove_all<I, H>(&mut self, names: I)
pub fn remove_all<I, H>(&mut self, names: I)
remove multiple headers by name
pub fn try_insert_with<F, V>(
&mut self,
name: impl Into<HeaderName<'static>>,
values_fn: F
)
pub fn try_insert_with<F, V>( &mut self, name: impl Into<HeaderName<'static>>, values_fn: F )
if a key does not exist already, execute the provided function and insert a value
this can be useful to avoid calculating an unnecessary header value, or checking for the presence of a key before insertion
Trait Implementations§
§impl<HN, HV> Extend<(HN, HV)> for Headers
impl<HN, HV> Extend<(HN, HV)> for Headers
§fn extend<T>(&mut self, iter: T)where
T: IntoIterator<Item = (HN, HV)>,
fn extend<T>(&mut self, iter: T)where
T: IntoIterator<Item = (HN, HV)>,
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)§impl<HN, HV> FromIterator<(HN, HV)> for Headers
impl<HN, HV> FromIterator<(HN, HV)> for Headers
§impl Handler for Headers
impl Handler for Headers
§fn run<'life0, 'async_trait>(
&'life0 self,
conn: Conn
) -> Pin<Box<dyn Future<Output = Conn> + Send + 'async_trait>>where
'life0: 'async_trait,
Headers: 'async_trait,
fn run<'life0, 'async_trait>(
&'life0 self,
conn: Conn
) -> Pin<Box<dyn Future<Output = Conn> + Send + 'async_trait>>where
'life0: 'async_trait,
Headers: 'async_trait,
§fn init<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_info: &'life1 mut Info
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
fn init<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_info: &'life1 mut Info
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
§fn before_send<'life0, 'async_trait>(
&'life0 self,
conn: Conn
) -> Pin<Box<dyn Future<Output = Conn> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn before_send<'life0, 'async_trait>(
&'life0 self,
conn: Conn
) -> Pin<Box<dyn Future<Output = Conn> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
§fn has_upgrade(&self, _upgrade: &Upgrade<BoxedTransport>) -> bool
fn has_upgrade(&self, _upgrade: &Upgrade<BoxedTransport>) -> bool
Handler::upgrade
]. The first
handler that responds true to this will receive ownership of the
[trillium::Upgrade
][crate::Upgrade] in a subsequent call to [Handler::upgrade
]§fn upgrade<'life0, 'async_trait>(
&'life0 self,
_upgrade: Upgrade<BoxedTransport>
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
fn upgrade<'life0, 'async_trait>(
&'life0 self,
_upgrade: Upgrade<BoxedTransport>
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
'life0: 'async_trait,
Self: 'async_trait,
Handler::has_upgrade
] and will only be called once for this
upgrade. There is no return value, and this function takes
exclusive ownership of the underlying transport once this is
called. You can downcast the transport to whatever the source
transport type is and perform any non-http protocol communication
that has been negotiated. You probably don’t want this unless
you’re implementing something like websockets. Please note that
for many transports such as TcpStreams, dropping the transport
(and therefore the Upgrade) will hang up / disconnect.