Struct trillium_client::Headers
source · pub struct Headers { /* private fields */ }
Expand description
Trillium’s header map type
Implementations§
source§impl Headers
impl Headers
sourcepub 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.
sourcepub fn reserve(&mut self, additional: usize)
pub fn reserve(&mut self, additional: usize)
Extend the capacity of the known headers map by this many
sourcepub 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.
sourcepub 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
.
sourcepub 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
sourcepub fn append_all(&mut self, other: Headers)
pub fn append_all(&mut self, other: Headers)
sourcepub fn insert_all(&mut self, other: Headers)
pub fn insert_all(&mut self, other: Headers)
Combine two Headers
, replacing any existing header values
sourcepub 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
sourcepub 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.
sourcepub 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.
sourcepub 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
sourcepub 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.
sourcepub 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
.
sourcepub 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.
sourcepub 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
sourcepub fn contains_ignore_ascii_case<'a>(
&self,
name: impl Into<HeaderName<'a>>,
needle: &str,
) -> bool
👎Deprecated: Please open an issue if this behavior is important to you. See documentation for deprecation rationale
pub fn contains_ignore_ascii_case<'a>( &self, name: impl Into<HeaderName<'a>>, needle: &str, ) -> bool
Deprecated because is likely not what you want. It is rarely the case that headers should be searched for a matching string instead of carefully parsed according to the appropriate header rule. Naive string matching on headers without regard to header structure is a possible source of spec noncompliance or occasionally security vulnerability, so trillium does not go out of its way to facilitate that.
sourcepub 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
sourcepub 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
sourcepub 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
sourcepub 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
sourcepub fn remove_all<I, H>(&mut self, names: I)
pub fn remove_all<I, H>(&mut self, names: I)
remove multiple headers by name
sourcepub 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§
source§impl<HN, HV> Extend<(HN, HV)> for Headers
impl<HN, HV> Extend<(HN, HV)> for Headers
source§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
)source§impl<HN, HV> FromIterator<(HN, HV)> for Headers
impl<HN, HV> FromIterator<(HN, HV)> for Headers
source§impl Handler for Headers
impl Handler for Headers
source§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,
source§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,
source§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,
source§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
in a subsequent call to Handler::upgrade
source§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.source§impl<'a> IntoIterator for &'a Headers
impl<'a> IntoIterator for &'a Headers
§type Item = (HeaderName<'a>, &'a HeaderValues)
type Item = (HeaderName<'a>, &'a HeaderValues)
source§impl IntoIterator for Headers
impl IntoIterator for Headers
§type Item = (HeaderName<'static>, HeaderValues)
type Item = (HeaderName<'static>, HeaderValues)
source§impl PartialEq for Headers
impl PartialEq for Headers
impl Eq for Headers
impl StructuralPartialEq for Headers
Auto Trait Implementations§
impl Freeze for Headers
impl RefUnwindSafe for Headers
impl Send for Headers
impl Sync for Headers
impl Unpin for Headers
impl UnwindSafe for Headers
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)