pub trait Entity:
'static
+ Send
+ Sync {
type Error: 'static + Send + Sync;
type Data: 'static + Send + Sync + Buf + From<Vec<u8>> + From<&'static [u8]>;
// Required methods
fn len(&self) -> u64;
fn get_range(
&self,
range: Range<u64>,
) -> Box<dyn Stream<Item = Result<Self::Data, Self::Error>> + Send + Sync>;
fn add_headers(&self, _: &mut HeaderMap);
fn etag(&self) -> Option<HeaderValue>;
fn last_modified(&self) -> Option<SystemTime>;
// Provided method
fn is_empty(&self) -> bool { ... }
}Expand description
A reusable, read-only, byte-rangeable HTTP entity for GET and HEAD serving. Must return exactly the same data on every call.
Required Associated Types§
Required Methods§
Sourcefn get_range(
&self,
range: Range<u64>,
) -> Box<dyn Stream<Item = Result<Self::Data, Self::Error>> + Send + Sync>
fn get_range( &self, range: Range<u64>, ) -> Box<dyn Stream<Item = Result<Self::Data, Self::Error>> + Send + Sync>
Gets the body bytes indicated by range.
Sourcefn add_headers(&self, _: &mut HeaderMap)
fn add_headers(&self, _: &mut HeaderMap)
Adds entity headers such as Content-Type to the supplied Headers object.
In particular, these headers are the “other representation header fields” described by RFC
7233 section 4.1; they should exclude
Content-Range, Date, Cache-Control, ETag, Expires, Content-Location, and Vary.
This function will be called only when that section says that headers such as
Content-Type should be included in the response.
Sourcefn etag(&self) -> Option<HeaderValue>
fn etag(&self) -> Option<HeaderValue>
Returns an etag for this entity, if available. Implementations are encouraged to provide a strong etag. RFC 7232 section 2.1 notes that only strong etags are usable for sub-range retrieval.
Sourcefn last_modified(&self) -> Option<SystemTime>
fn last_modified(&self) -> Option<SystemTime>
Returns the last modified time of this entity, if available.
Note that serve may serve an earlier Last-Modified: date than the one returned here if
this time is in the future, as required by RFC 7232 section
2.2.1.
Provided Methods§
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".