Skip to main content

Headers

Struct Headers 

Source
pub struct Headers { /* private fields */ }
Expand description

An immutable view of headers

Header values are stored exactly as received and are not required to be valid UTF-8: an HTTP header value may contain any octet in 0x80..=0xFF (obs-text, RFC 7230), and an arbitrary sequence of those is not necessarily valid UTF-8. The string-typed accessors (get, get_all, iter, remove) therefore yield only values that are valid UTF-8, and skip those that are not. Use the corresponding byte accessors (get_bytes, get_all_bytes, iter_bytes) to observe every value.

Consequently len and contains_key count and report values the string accessors skip.

Implementations§

Source§

impl Headers

Source

pub fn new() -> Self

Create an empty header map

Source

pub fn get(&self, key: impl AsRef<str>) -> Option<&str>

Returns the value for a given key

Returns None if the header is absent, or if its value is not valid UTF-8; use get_bytes to read a value of any encoding.

If multiple values are associated, the first value is returned See HeaderMap::get

Source

pub fn try_get(&self, key: impl AsRef<str>) -> Option<Result<&str, &[u8]>>

Returns the value for a given key, distinguishing an unreadable value from an absent header

Some(Ok(_)) is a value that is valid UTF-8, Some(Err(_)) is the raw octets of one that is not, and None means the header is absent. get collapses the first two into None, so use this where the difference matters.

If multiple values are associated, the first value is returned.

Source

pub fn get_all(&self, key: impl AsRef<str>) -> impl Iterator<Item = &str>

Returns all values for a given key

Values that are not valid UTF-8 are skipped; use get_all_bytes to read values of any encoding.

Source

pub fn get_bytes(&self, key: impl AsRef<str>) -> Option<&[u8]>

Returns the value for a given key as raw bytes

Unlike get, the returned bytes are not required to be valid UTF-8.

If multiple values are associated, the first value is returned.

Source

pub fn get_all_bytes(&self, key: impl AsRef<str>) -> impl Iterator<Item = &[u8]>

Returns all values for a given key as raw bytes

Unlike get_all, the returned bytes are not required to be valid UTF-8.

Source

pub fn iter(&self) -> HeadersIter<'_> ⓘ

Returns an iterator over the headers

Source

pub fn iter_bytes(&self) -> impl Iterator<Item = (&str, &[u8])>

Returns an iterator over the headers, pairing each name with its raw value bytes

Unlike iter, the returned bytes are not required to be valid UTF-8.

Source

pub fn len(&self) -> usize

Returns the total number of values stored in the map

Source

pub fn is_empty(&self) -> bool

Returns true if there are no headers

Source

pub fn contains_key(&self, key: impl AsRef<str>) -> bool

Returns true if this header is present

Source

pub fn insert( &mut self, key: impl AsHeaderComponent, value: impl AsHeaderComponent, ) -> Option<String>

Insert a value into the headers structure.

This will replace any existing value for this key. Returns the previous associated value if any.

§Panics

If the key is not valid ASCII, or if the value is not valid UTF-8, this function will panic.

Source

pub fn try_insert( &mut self, key: impl AsHeaderComponent, value: impl AsHeaderComponent, ) -> Result<Option<String>, HttpError>

Insert a value into the headers structure.

This will replace any existing value for this key. Returns the previous associated value if any.

If the key is not valid ASCII, or if the value is not valid UTF-8, this function will return an error.

Source

pub fn append( &mut self, key: impl AsHeaderComponent, value: impl AsHeaderComponent, ) -> bool

Appends a value to a given key

§Panics

If the key is not valid ASCII, or if the value is not valid UTF-8, this function will panic.

Source

pub fn try_append( &mut self, key: impl AsHeaderComponent, value: impl AsHeaderComponent, ) -> Result<bool, HttpError>

Appends a value to a given key

If the key is not valid ASCII, or if the value is not valid UTF-8, this function will return an error.

Source

pub fn remove(&mut self, key: impl AsRef<str>) -> Option<String>

Removes all headers with a given key

If there are multiple entries for this key, the first entry is returned. Returns None if the first value is not valid UTF-8; the headers are removed either way.

Trait Implementations§

Source§

impl Clone for Headers

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Headers

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Headers

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'a> IntoIterator for &'a Headers

Source§

type Item = (&'a str, &'a str)

The type of the elements being iterated over.
Source§

type IntoIter = HeadersIter<'a>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
Source§

impl TryFrom<HeaderMap> for Headers

Available on crate feature http-02x only.
Source§

type Error = HttpError

The type returned in the event of a conversion error.
Source§

fn try_from(value: HeaderMap) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl TryFrom<HeaderMap> for Headers

Available on crate feature http-1x only.
Source§

type Error = HttpError

The type returned in the event of a conversion error.
Source§

fn try_from(value: HeaderMap) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more