feat(client): Response.status() now returns a StatusCode

Previously, it would return `&StatusCode`. Returning a reference was
actually bigger than the enum itself, and prevented using `Into` on the
return result directly.

BREAKING CHANGE: If you were explicitly checking the status, such as
  with an equality comparison, you will need to use the value instead of a
  reference.
This commit is contained in:
Sean McArthur
2017-03-31 15:13:55 -07:00
parent 47f3aa6247
commit d63b7de44f
6 changed files with 12 additions and 12 deletions

View File

@@ -36,7 +36,7 @@ impl<B> Request<B> {
/// Read the Request Version. /// Read the Request Version.
#[inline] #[inline]
pub fn version(&self) -> &HttpVersion { &self.version } pub fn version(&self) -> HttpVersion { self.version }
/// Read the Request headers. /// Read the Request headers.
#[inline] #[inline]

View File

@@ -37,7 +37,7 @@ impl Response {
/// Get the status from the server. /// Get the status from the server.
#[inline] #[inline]
pub fn status(&self) -> &status::StatusCode { &self.status } pub fn status(&self) -> status::StatusCode { self.status }
/// Get the raw status code and reason. /// Get the raw status code and reason.
#[inline] #[inline]
@@ -45,7 +45,7 @@ impl Response {
/// Get the HTTP version of this response from the server. /// Get the HTTP version of this response from the server.
#[inline] #[inline]
pub fn version(&self) -> &version::HttpVersion { &self.version } pub fn version(&self) -> version::HttpVersion { self.version }
/// Take the `Body` of this response. /// Take the `Body` of this response.
#[inline] #[inline]

View File

@@ -37,14 +37,14 @@ impl Request {
/// The version of HTTP for this request. /// The version of HTTP for this request.
#[inline] #[inline]
pub fn version(&self) -> &HttpVersion { &self.version } pub fn version(&self) -> HttpVersion { self.version }
/// The remote socket address of this request /// The remote socket address of this request
/// ///
/// This is an `Option`, because some underlying transports may not have /// This is an `Option`, because some underlying transports may not have
/// a socket address, such as Unix Sockets. /// a socket address, such as Unix Sockets.
#[inline] #[inline]
pub fn remote_addr(&self) -> Option<&SocketAddr> { self.remote_addr.as_ref() } pub fn remote_addr(&self) -> Option<SocketAddr> { self.remote_addr }
/// The target path of this Request. /// The target path of this Request.
#[inline] #[inline]

View File

@@ -26,13 +26,13 @@ impl<B> Response<B> {
/// The status of this response. /// The status of this response.
#[inline] #[inline]
pub fn status(&self) -> &StatusCode { pub fn status(&self) -> StatusCode {
&self.head.subject self.head.subject
} }
/// The HTTP version of this response. /// The HTTP version of this response.
#[inline] #[inline]
pub fn version(&self) -> &version::HttpVersion { &self.head.version } pub fn version(&self) -> version::HttpVersion { self.head.version }
/// Get a mutable reference to the Headers. /// Get a mutable reference to the Headers.
#[inline] #[inline]

View File

@@ -550,9 +550,9 @@ impl Default for StatusCode {
} }
} }
impl Into<u16> for StatusCode { impl From<StatusCode> for u16 {
fn into(self) -> u16 { fn from(code: StatusCode) -> u16 {
self.to_u16() code.to_u16()
} }
} }

View File

@@ -89,7 +89,7 @@ macro_rules! test {
let work = res.join(rx).map(|r| r.0); let work = res.join(rx).map(|r| r.0);
let res = core.run(work).unwrap(); let res = core.run(work).unwrap();
assert_eq!(res.status(), &StatusCode::$client_status, "status is invalid"); assert_eq!(res.status(), StatusCode::$client_status, "status is invalid");
$( $(
assert_eq!(res.headers().get(), Some(&$response_headers), "headers are invalid"); assert_eq!(res.headers().get(), Some(&$response_headers), "headers are invalid");
)* )*