Skip to main content

IfRange

Enum IfRange 

Source
pub enum IfRange {
    Date(HeaderValue),
    ETag(HeaderValue),
}
Expand description

A typed HTTP If-Range header.

Per RFC 9110 Section 13.1.5, If-Range can contain either an HTTP-date or an entity-tag. When present alongside a Range header, the server must evaluate the validator against the current representation:

  • If the validator matches, the Range is honored (206 Partial Content).
  • If the validator does not match, the Range is ignored and the full representation is served (200 OK).

Variants§

§

Date(HeaderValue)

An HTTP-date validator (the raw header value, to be compared with Last-Modified).

§

ETag(HeaderValue)

An entity-tag validator (the raw header value, to be compared with ETag).

Implementations§

Source§

impl IfRange

Source

pub fn evaluate( &self, range: HttpRange, last_modified: Option<&HeaderValue>, etag: Option<&HeaderValue>, ) -> Option<HttpRange>

Evaluates the If-Range condition and returns the HttpRange only if the condition holds.

  • range: the parsed Range header value.
  • last_modified: the current Last-Modified header of the representation.
  • etag: the current ETag header of the representation.

Returns Some(range) if the validator matches (the range should be honored), or None if it does not (the full representation should be served).

Per RFC 9110 Section 13.1.5, the comparison uses the raw header values:

  • For dates, the If-Range value must be an exact byte-for-byte match of the Last-Modified header value.
  • For entity-tags, the If-Range value must be a strong comparison match against the ETag header value. Weak entity-tags never match.

Trait Implementations§

Source§

impl Clone for IfRange

Source§

fn clone(&self) -> IfRange

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for IfRange

Source§

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

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

impl FromStr for IfRange

Source§

type Err = InvalidIfRange

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

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

impl<S> OptionalFromRequestParts<S> for IfRange
where S: Send + Sync,

Available on crate feature axum only.
Source§

type Rejection = Infallible

If the extractor fails, it will use this “rejection” type. Read more
Source§

async fn from_request_parts( parts: &mut Parts, _state: &S, ) -> Result<Option<Self>, Self::Rejection>

Perform the extraction.
Source§

impl PartialEq for IfRange

Source§

fn eq(&self, other: &IfRange) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl TryFrom<&HeaderValue> for IfRange

Source§

type Error = InvalidIfRange

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

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

Performs the conversion.
Source§

impl Eq for IfRange

Source§

impl StructuralPartialEq for IfRange

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> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.