pub enum Range {
Bytes(Vec<ByteRangeSpec>),
Unregistered(String, String),
}
Expand description
Range
header, defined
in RFC 7233 §3.1
The “Range” header field on a GET request modifies the method semantics to request transfer of only one or more sub-ranges of the selected representation data, rather than the entire selected representation data.
ABNF
Range = byte-ranges-specifier / other-ranges-specifier
other-ranges-specifier = other-range-unit "=" other-range-set
other-range-set = 1*VCHAR
bytes-unit = "bytes"
byte-ranges-specifier = bytes-unit "=" byte-range-set
byte-range-set = 1#(byte-range-spec / suffix-byte-range-spec)
byte-range-spec = first-byte-pos "-" [last-byte-pos]
suffix-byte-range-spec = "-" suffix-length
suffix-length = 1*DIGIT
first-byte-pos = 1*DIGIT
last-byte-pos = 1*DIGIT
Example Values
bytes=1000-
bytes=-50
bytes=0-1,30-40
bytes=0-10,20-90,-100
custom_unit=0-123
custom_unit=xxx-yyy
Examples
use actix_web::http::header::{Range, ByteRangeSpec};
use actix_web::HttpResponse;
let mut builder = HttpResponse::Ok();
builder.insert_header(Range::Bytes(
vec![ByteRangeSpec::FromTo(1, 100), ByteRangeSpec::From(200)]
));
builder.insert_header(Range::Unregistered("letters".to_owned(), "a-f".to_owned()));
builder.insert_header(Range::bytes(1, 100));
builder.insert_header(Range::bytes_multi(vec![(1, 100), (200, 300)]));
Variants§
Bytes(Vec<ByteRangeSpec>)
Byte range.
Unregistered(String, String)
Custom range, with unit not registered at IANA.
(other-range-unit
: String , other-range-set
: String)
Implementations§
Trait Implementations§
source§impl Header for Range
impl Header for Range
source§fn name() -> HeaderName
fn name() -> HeaderName
Returns the name of the header field.
source§fn parse<T: HttpMessage>(msg: &T) -> Result<Self, ParseError>
fn parse<T: HttpMessage>(msg: &T) -> Result<Self, ParseError>
Parse the header from a HTTP message.
source§impl PartialEq<Range> for Range
impl PartialEq<Range> for Range
source§impl TryIntoHeaderValue for Range
impl TryIntoHeaderValue for Range
§type Error = InvalidHeaderValue
type Error = InvalidHeaderValue
The type returned in the event of a conversion error.
source§fn try_into_value(self) -> Result<HeaderValue, Self::Error>
fn try_into_value(self) -> Result<HeaderValue, Self::Error>
Try to convert value to a HeaderValue.
impl Eq for Range
impl StructuralEq for Range
impl StructuralPartialEq for Range
Auto Trait Implementations§
impl RefUnwindSafe for Range
impl Send for Range
impl Sync for Range
impl Unpin for Range
impl UnwindSafe for Range
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
Mutably borrows from an owned value. Read more
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.