pub struct Response<'a, W = Fresh>where
W: Any,{
pub version: HttpVersion,
/* private fields */
}
Expand description
The outgoing half for a Tcp connection, created by a Server
and given to a Handler
.
The default StatusCode
for a Response
is 200 OK
.
There is a Drop
implementation for Response
that will automatically
write the head and flush the body, if the handler has not already done so,
so that the server doesn’t accidentally leave dangling requests.
Fields§
§version: HttpVersion
The HTTP version of this response.
Implementations§
source§impl<'a, W> Response<'a, W>where
W: Any,
impl<'a, W> Response<'a, W>where
W: Any,
sourcepub fn status(&self) -> StatusCode
pub fn status(&self) -> StatusCode
The status of this response.
sourcepub fn construct(
version: HttpVersion,
body: HttpWriter<&'a mut dyn Write>,
status: StatusCode,
headers: &'a mut Headers,
) -> Response<'a> ⓘ
pub fn construct( version: HttpVersion, body: HttpWriter<&'a mut dyn Write>, status: StatusCode, headers: &'a mut Headers, ) -> Response<'a> ⓘ
Construct a Response from its constituent parts.
sourcepub fn deconstruct(
self,
) -> (HttpVersion, HttpWriter<&'a mut dyn Write>, StatusCode, &'a mut Headers)
pub fn deconstruct( self, ) -> (HttpVersion, HttpWriter<&'a mut dyn Write>, StatusCode, &'a mut Headers)
Deconstruct this Response into its constituent parts.
source§impl<'a> Response<'a>
impl<'a> Response<'a>
sourcepub fn new(stream: &'a mut dyn Write, headers: &'a mut Headers) -> Response<'a> ⓘ
pub fn new(stream: &'a mut dyn Write, headers: &'a mut Headers) -> Response<'a> ⓘ
Creates a new Response that can be used to write to a network stream.
sourcepub fn send(self, body: &[u8]) -> Result<(), Error>
pub fn send(self, body: &[u8]) -> Result<(), Error>
Writes the body and ends the response.
This is a shortcut method for when you have a response with a fixed
size, and would only need a single write
call normally.
§Example
fn handler(res: Response) {
res.send(b"Hello World!").unwrap();
}
The above is the same, but shorter, than the longer:
use std::io::Write;
use hyper::header::ContentLength;
fn handler(mut res: Response) {
let body = b"Hello World!";
res.headers_mut().set(ContentLength(body.len() as u64));
let mut res = res.start().unwrap();
res.write_all(body).unwrap();
}
sourcepub fn start(self) -> Result<Response<'a, Streaming>, Error>
pub fn start(self) -> Result<Response<'a, Streaming>, Error>
Consume this Response
sourcepub fn status_mut(&mut self) -> &mut StatusCode
pub fn status_mut(&mut self) -> &mut StatusCode
Get a mutable reference to the status.
sourcepub fn headers_mut(&mut self) -> &mut Headers
pub fn headers_mut(&mut self) -> &mut Headers
Get a mutable reference to the Headers.
Trait Implementations§
source§impl<'a> Write for Response<'a, Streaming>
impl<'a> Write for Response<'a, Streaming>
source§fn write(&mut self, msg: &[u8]) -> Result<usize, Error>
fn write(&mut self, msg: &[u8]) -> Result<usize, Error>
source§fn flush(&mut self) -> Result<(), Error>
fn flush(&mut self) -> Result<(), Error>
source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector
)1.0.0 · source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
write_all_vectored
)