# Struct http::header::HeaderName [−] [src]

    pub struct HeaderName { /* fields omitted */ }

Represents an HTTP header field name

Header field names identify the header. Header sets may include multiple headers with the same name. The HTTP specification defines a number of standard headers, but HTTP messages may include non-standard header names as well as long as they adhere to the specification.

`HeaderName` is used as the `HeaderMap` key. Constants are available for all standard header names in the `header` module.

# Representation

`HeaderName` represents standard header names using an `enum`, as such they will not require an allocation for storage. All custom header names are lower cased upon conversion to a `HeaderName` value. This avoids the overhead of dynamically doing lower case conversion during the hash code computation and the comparison operation.

## Implementations

### `impl HeaderName` [src]

#### `pub fn from_bytes(src: &[u8]) -> Result<HeaderName, InvalidHeaderName>` [src]

Converts a slice of bytes to an HTTP header name.

This function normalizes the input.

#### `pub fn from_lowercase(src: &[u8]) -> Result<HeaderName, InvalidHeaderName>` [src]

Converts a slice of bytes to an HTTP header name.

This function expects the input to only contain lowercase characters. This is useful when decoding HTTP/2.0 or HTTP/3.0 headers. Both require that all headers be represented in lower case.

# Examples

    // Parsing a lower case header
    let hdr = HeaderName::from_lowercase(b"content-length").unwrap();
    assert_eq!(CONTENT_LENGTH, hdr);

    // Parsing a header that contains uppercase characters
    assert!(HeaderName::from_lowercase(b"Content-Length").is_err());

#### `pub fn from_static(src: &'static str) -> HeaderName` [src]

Converts a static string to a HTTP header name.

This function panics when the static string is a invalid header.

This function requires the static string to only contain lowercase characters, numerals and symbols, as per the HTTP/2.0 specification and header names internal representation within this library.

# Examples

    // Parsing a standard header
    let hdr = HeaderName::from_static("content-length");
    assert_eq!(CONTENT_LENGTH, hdr);

    // Parsing a custom header
    let CUSTOM_HEADER: &'static str = "custom-header";

    let a = HeaderName::from_lowercase(b"custom-header").unwrap();
    let b = HeaderName::from_static(CUSTOM_HEADER);
    assert_eq!(a, b);

ⓘ

    // Parsing a header that contains invalid symbols(s):
    HeaderName::from_static("content{}{}length"); // This line panics!

    // Parsing a header that contains invalid uppercase characters.
    let a = HeaderName::from_static("foobar");
    let b = HeaderName::from_static("FOOBAR"); // This line panics!

#### `pub fn as_str(&self) -> &str` [src]

Returns a `str` representation of the header.

The returned string will always be lower case.

## Trait Implementations

### `impl AsHeaderName for HeaderName` [src]

### `impl<'a> AsHeaderName for &'a HeaderName` [src]

### `impl AsRef<[u8]> for HeaderName` [src]

#### `fn as_ref(&self) -> &[u8]` [src]

Performs the conversion.

### `impl AsRef<str> for HeaderName` [src]

#### `fn as_ref(&self) -> &str` [src]

Performs the conversion.

### `impl Borrow<str> for HeaderName` [src]

#### `fn borrow(&self) -> &str` [src]

Immutably borrows from an owned value. Read more

### `impl Clone for HeaderName` [src]

#### `fn clone(&self) -> HeaderName` [src]

Returns a copy of the value. Read more

#### `pub fn clone_from(&mut self, source: &Self)`1.0.0 [src]

Performs copy-assignment from `source`. Read more

### `impl Debug for HeaderName` [src]

#### `fn fmt(&self, fmt: &mut Formatter<'_>) -> Result` [src]

Formats the value using the given formatter. Read more

### `impl Display for HeaderName` [src]

#### `fn fmt(&self, fmt: &mut Formatter<'_>) -> Result` [src]

Formats the value using the given formatter. Read more

### `impl Eq for HeaderName` [src]

### `impl<'a> From<&'a HeaderName> for HeaderName` [src]

#### `fn from(src: &'a HeaderName) -> HeaderName` [src]

Performs the conversion.

### `impl From<HeaderName> for HeaderValue` [src]

#### `fn from(h: HeaderName) -> HeaderValue` [src]

Performs the conversion.

### `impl FromStr for HeaderName` [src]

#### `type Err = InvalidHeaderName`

The associated error which can be returned from parsing.

#### `fn from_str(s: &str) -> Result<HeaderName, InvalidHeaderName>` [src]

Parses a string `s` to return a value of this type. Read more

### `impl Hash for HeaderName` [src]

#### `fn hash<__H: Hasher>(&self, state: &mut __H)` [src]

Feeds this value into the given `Hasher`. Read more

#### `pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,` 1.3.0 [src]

Feeds a slice of this type into the given `Hasher`. Read more

### `impl IntoHeaderName for HeaderName` [src]

### `impl<'a> IntoHeaderName for &'a HeaderName` [src]

### `impl<'a> PartialEq<&'a HeaderName> for HeaderName` [src]

#### `fn eq(&self, other: &&'a HeaderName) -> bool` [src]

This method tests for `self` and `other` values to be equal, and is used by `==`. Read more

#### `#[must_use]pub fn ne(&self, other: &Rhs) -> bool` 1.0.0 [src]

This method tests for `!=`.

### `impl<'a> PartialEq<&'a str> for HeaderName` [src]

#### `fn eq(&self, other: &&'a str) -> bool` [src]

Performs a case-insensitive comparison of the string against the header name

#### `#[must_use]pub fn ne(&self, other: &Rhs) -> bool` 1.0.0 [src]

This method tests for `!=`.

### `impl PartialEq<HeaderName> for HeaderName` [src]

#### `fn eq(&self, other: &HeaderName) -> bool` [src]

This method tests for `self` and `other` values to be equal, and is used by `==`. Read more

#### `fn ne(&self, other: &HeaderName) -> bool` [src]

This method tests for `!=`.

### `impl<'a> PartialEq<HeaderName> for &'a HeaderName` [src]

#### `fn eq(&self, other: &HeaderName) -> bool` [src]

This method tests for `self` and `other` values to be equal, and is used by `==`. Read more

#### `#[must_use]pub fn ne(&self, other: &Rhs) -> bool` 1.0.0 [src]

This method tests for `!=`.

### `impl PartialEq<HeaderName> for str` [src]

#### `fn eq(&self, other: &HeaderName) -> bool` [src]

Performs a case-insensitive comparison of the string against the header name

# Examples

    use http::header::CONTENT_LENGTH;

    assert_eq!(CONTENT_LENGTH, "content-length");
    assert_eq!(CONTENT_LENGTH, "Content-Length");
    assert_ne!(CONTENT_LENGTH, "content length");

#### `#[must_use]pub fn ne(&self, other: &Rhs) -> bool` 1.0.0 [src]

This method tests for `!=`.

### `impl<'a> PartialEq<HeaderName> for &'a str` [src]

#### `fn eq(&self, other: &HeaderName) -> bool` [src]

Performs a case-insensitive comparison of the string against the header name

#### `#[must_use]pub fn ne(&self, other: &Rhs) -> bool` 1.0.0 [src]

This method tests for `!=`.

### `impl PartialEq<str> for HeaderName` [src]

#### `fn eq(&self, other: &str) -> bool` [src]

Performs a case-insensitive comparison of the string against the header name

# Examples

    use http::header::CONTENT_LENGTH;

    assert_eq!(CONTENT_LENGTH, "content-length");
    assert_eq!(CONTENT_LENGTH, "Content-Length");
    assert_ne!(CONTENT_LENGTH, "content length");

#### `#[must_use]pub fn ne(&self, other: &Rhs) -> bool` 1.0.0 [src]

This method tests for `!=`.

### `impl StructuralEq for HeaderName` [src]

### `impl StructuralPartialEq for HeaderName` [src]

### `impl<'a> TryFrom<&'a [u8]> for HeaderName` [src]

#### `type Error = InvalidHeaderName`

The type returned in the event of a conversion error.

#### `fn try_from(s: &'a [u8]) -> Result<Self, Self::Error>` [src]

Performs the conversion.

### `impl<'a> TryFrom<&'a String> for HeaderName` [src]

#### `type Error = InvalidHeaderName`

The type returned in the event of a conversion error.

#### `fn try_from(s: &'a String) -> Result<Self, Self::Error>` [src]

Performs the conversion.

### `impl<'a> TryFrom<&'a str> for HeaderName` [src]

#### `type Error = InvalidHeaderName`

The type returned in the event of a conversion error.

#### `fn try_from(s: &'a str) -> Result<Self, Self::Error>` [src]

Performs the conversion.

## Auto Trait Implementations

### `impl RefUnwindSafe for HeaderName`

### `impl Send for HeaderName`

### `impl Sync for HeaderName`

### `impl Unpin for HeaderName`

### `impl UnwindSafe for HeaderName`

## Blanket Implementations

### `impl<T> Any for T where
T: 'static + ?Sized,` [src]

#### `pub fn type_id(&self) -> TypeId` [src]

Gets the `TypeId` of `self`. Read more

### `impl<T> Borrow<T> for T where
T: ?Sized,` [src]

#### `pub fn borrow(&self) -> &T` [src]

Immutably borrows from an owned value. Read more

### `impl<T> BorrowMut<T> for T where
T: ?Sized,` [src]

#### `pub fn borrow_mut(&mut self) -> &mut T` [src]

Mutably borrows from an owned value. Read more

### `impl<T> From<T> for T` [src]

#### `pub fn from(t: T) -> T` [src]

Performs the conversion.

### `impl<T, U> Into<U> for T where
U: From<T>,` [src]

#### `pub fn into(self) -> U` [src]

Performs the conversion.

### `impl<T> ToOwned for T where
T: Clone,` [src]

#### `type Owned = T`

The resulting type after obtaining ownership.

#### `pub fn to_owned(&self) -> T` [src]

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

#### `pub fn clone_into(&self, target: &mut T)` [src]

🔬 This is a nightly-only experimental API. (`toowned_clone_into`)

recently added

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

### `impl<T> ToString for T where
T: Display + ?Sized,` [src]

#### `pub default fn to_string(&self) -> String` [src]

Converts the given value to a `String`. Read more

### `impl<T, U> TryFrom<U> for T where
U: Into<T>,` [src]

#### `type Error = Infallible`

The type returned in the event of a conversion error.

#### `pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>` [src]

Performs the conversion.

### `impl<T, U> TryInto<U> for T where
U: TryFrom<T>,` [src]

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

The type returned in the event of a conversion error.

#### `pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>` [src]

Performs the conversion.