Enum Entry

pub enum Entry<'a, T: 'a>

A view into a single location in a HeaderMap, which may be vacant or occupied.

Variants

Occupied(OccupiedEntry<'a, T>)

An occupied entry

Vacant(VacantEntry<'a, T>)

A vacant entry

Implementations

impl<'a, T> Entry<'a, T>

fn or_insert(self, default: T) -> &'a mut T

Ensures a value is in the entry by inserting the default if empty.

Returns a mutable reference to the first value in the entry.

Panics

This method panics if capacity exceeds max HeaderMap capacity

Examples

# use http::HeaderMap;
let mut map: HeaderMap<u32> = HeaderMap::default();

let headers = &[
    "content-length",
    "x-hello",
    "Content-Length",
    "x-world",
];

for &header in headers {
    let counter = map.entry(header)
        .or_insert(0);
    *counter += 1;
}

assert_eq!(map["content-length"], 2);
assert_eq!(map["x-hello"], 1);
fn or_try_insert(self, default: T) -> Result<&'a mut T, MaxSizeReached>

Ensures a value is in the entry by inserting the default if empty.

Returns a mutable reference to the first value in the entry.

Errors

This function may return an error if HeaderMap exceeds max capacity

Examples

# use http::HeaderMap;
let mut map: HeaderMap<u32> = HeaderMap::default();

let headers = &[
    "content-length",
    "x-hello",
    "Content-Length",
    "x-world",
];

for &header in headers {
    let counter = map.entry(header)
        .or_try_insert(0)
        .unwrap();
    *counter += 1;
}

assert_eq!(map["content-length"], 2);
assert_eq!(map["x-hello"], 1);
fn or_insert_with<F: FnOnce() -> T>(self, default: F) -> &'a mut T

Ensures a value is in the entry by inserting the result of the default function if empty.

The default function is not called if the entry exists in the map. Returns a mutable reference to the first value in the entry.

Examples

Basic usage.

# use http::HeaderMap;
let mut map = HeaderMap::new();

let res = map.entry("x-hello")
    .or_insert_with(|| "world".parse().unwrap());

assert_eq!(res, "world");

The default function is not called if the entry exists in the map.

# use http::HeaderMap;
# use http::header::HOST;
let mut map = HeaderMap::new();
map.try_insert(HOST, "world".parse().unwrap()).unwrap();

let res = map.try_entry("host")
    .unwrap()
    .or_try_insert_with(|| unreachable!())
    .unwrap();


assert_eq!(res, "world");
fn or_try_insert_with<F: FnOnce() -> T>(self, default: F) -> Result<&'a mut T, MaxSizeReached>

Ensures a value is in the entry by inserting the result of the default function if empty.

The default function is not called if the entry exists in the map. Returns a mutable reference to the first value in the entry.

Examples

Basic usage.

# use http::HeaderMap;
let mut map = HeaderMap::new();

let res = map.entry("x-hello")
    .or_insert_with(|| "world".parse().unwrap());

assert_eq!(res, "world");

The default function is not called if the entry exists in the map.

# use http::HeaderMap;
# use http::header::HOST;
let mut map = HeaderMap::new();
map.try_insert(HOST, "world".parse().unwrap()).unwrap();

let res = map.try_entry("host")
    .unwrap()
    .or_try_insert_with(|| unreachable!())
    .unwrap();


assert_eq!(res, "world");
fn key(&self) -> &HeaderName

Returns a reference to the entry's key

Examples

# use http::HeaderMap;
let mut map = HeaderMap::new();

assert_eq!(map.entry("x-hello").key(), "x-hello");

Trait Implementations

impl<'a, T: Debug + 'a> Debug for Entry<'a, T>

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

Auto Trait Implementations

impl<'a, T> !Freeze for Entry<'a, T>

impl<'a, T> !UnwindSafe for Entry<'a, T>

impl<'a, T> RefUnwindSafe for Entry<'a, T> where OccupiedEntry<'a, T>: RefUnwindSafe, VacantEntry<'a, T>: RefUnwindSafe,

impl<'a, T> Send for Entry<'a, T> where OccupiedEntry<'a, T>: Send, VacantEntry<'a, T>: Send,

impl<'a, T> Sync for Entry<'a, T> where OccupiedEntry<'a, T>: Sync, VacantEntry<'a, T>: Sync,

impl<'a, T> Unpin for Entry<'a, T> where OccupiedEntry<'a, T>: Unpin, VacantEntry<'a, T>: Unpin,

impl<'a, T> UnsafeUnpin for Entry<'a, T> where OccupiedEntry<'a, T>: UnsafeUnpin, VacantEntry<'a, T>: UnsafeUnpin,

Blanket Implementations

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

fn type_id(&self) -> TypeId

impl<T> Borrow<T> for Entry<'a, T> where T: ?Sized,

fn borrow(&self) -> &T

impl<T> BorrowMut<T> for Entry<'a, T> where T: ?Sized,

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

impl<T> From<T> for Entry<'a, T>

fn from(t: T) -> T

Returns the argument unchanged.

impl<T, U> Into<U> for Entry<'a, T> where U: From<T>,

fn into(self) -> U

Calls U::from(self).

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

impl<T, U> TryFrom<U> for Entry<'a, T> where U: Into<T>,

type Error = never;
fn try_from(value: U) -> Result<T, never>

impl<T, U> TryInto<U> for Entry<'a, T> where U: TryFrom<T>,

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