Struct rocket::http::Status

pub struct Status {
    pub code: u16,
    pub reason: &'static str,
Expand description

Structure representing an HTTP status: an integer code and a reason phrase.


Status classes should rarely be created directly. Instead, an associated constant should be used; one is declared for every status defined in the HTTP standard.


A status of 200 OK can be instantiated via the Ok constant:

use rocket::http::Status;

let ok = Status::Ok;

A status of 404 Not Found can be instantiated via the NotFound constant:

use rocket::http::Status;

let not_found = Status::NotFound;

The code and phrase can be retrieved directly:

use rocket::http::Status;

let not_found = Status::NotFound;

assert_eq!(not_found.code, 404);
assert_eq!(not_found.reason, "Not Found");
assert_eq!(not_found.to_string(), "404 Not Found".to_string());


§code: u16

The HTTP status code associated with this status.

§reason: &'static str

The HTTP reason phrase associated with this status.



impl Status

pub fn new(code: u16, reason: &'static str) -> Status

Creates a new Status with code and reason. This should be used only to construct non-standard HTTP statuses. Use an associated constant for standard statuses.


Create a custom 299 Somewhat Successful status:

use rocket::http::Status;

let custom = Status::new(299, "Somewhat Successful");
assert_eq!(custom.to_string(), "299 Somewhat Successful".to_string());

pub fn class(&self) -> StatusClass

Returns the class of a given status.

use rocket::http::{Status, StatusClass};

let processing = Status::Processing;
assert_eq!(processing.class(), StatusClass::Informational);

let ok = Status::Ok;
assert_eq!(ok.class(), StatusClass::Success);

let see_other = Status::SeeOther;
assert_eq!(see_other.class(), StatusClass::Redirection);

let not_found = Status::NotFound;
assert_eq!(not_found.class(), StatusClass::ClientError);

let internal_error = Status::InternalServerError;
assert_eq!(internal_error.class(), StatusClass::ServerError);

let custom = Status::new(600, "Bizarre");
assert_eq!(custom.class(), StatusClass::Unknown);

pub const Continue: Status = _

Status with code 100 and reason Continue .

pub const SwitchingProtocols: Status = _

Status with code 101 and reason Switching Protocols .

pub const Processing: Status = _

Status with code 102 and reason Processing .

pub const Ok: Status = _

Status with code 200 and reason OK .

pub const Created: Status = _

Status with code 201 and reason Created .

pub const Accepted: Status = _

Status with code 202 and reason Accepted .

pub const NonAuthoritativeInformation: Status = _

Status with code 203 and reason Non-Authoritative Information .

pub const NoContent: Status = _

Status with code 204 and reason No Content .

pub const ResetContent: Status = _

Status with code 205 and reason Reset Content .

pub const PartialContent: Status = _

Status with code 206 and reason Partial Content .

pub const MultiStatus: Status = _

Status with code 207 and reason Multi-Status .

pub const AlreadyReported: Status = _

Status with code 208 and reason Already Reported .

pub const ImUsed: Status = _

Status with code 226 and reason IM Used .

pub const MultipleChoices: Status = _

Status with code 300 and reason Multiple Choices .

pub const MovedPermanently: Status = _

Status with code 301 and reason Moved Permanently .

pub const Found: Status = _

Status with code 302 and reason Found .

pub const SeeOther: Status = _

Status with code 303 and reason See Other .

pub const NotModified: Status = _

Status with code 304 and reason Not Modified .

pub const UseProxy: Status = _

Status with code 305 and reason Use Proxy .

pub const TemporaryRedirect: Status = _

Status with code 307 and reason Temporary Redirect .

pub const PermanentRedirect: Status = _

Status with code 308 and reason Permanent Redirect .

pub const BadRequest: Status = _

Status with code 400 and reason Bad Request .

pub const Unauthorized: Status = _

Status with code 401 and reason Unauthorized .

pub const PaymentRequired: Status = _

Status with code 402 and reason Payment Required .

pub const Forbidden: Status = _

Status with code 403 and reason Forbidden .

pub const NotFound: Status = _

Status with code 404 and reason Not Found .

pub const MethodNotAllowed: Status = _

Status with code 405 and reason Method Not Allowed .

pub const NotAcceptable: Status = _

Status with code 406 and reason Not Acceptable .

pub const ProxyAuthenticationRequired: Status = _

Status with code 407 and reason Proxy Authentication Required .

pub const RequestTimeout: Status = _

Status with code 408 and reason Request Timeout .

pub const Conflict: Status = _

Status with code 409 and reason Conflict .

pub const Gone: Status = _

Status with code 410 and reason Gone .

pub const LengthRequired: Status = _

Status with code 411 and reason Length Required .

pub const PreconditionFailed: Status = _

Status with code 412 and reason Precondition Failed .

pub const PayloadTooLarge: Status = _

Status with code 413 and reason Payload Too Large .

pub const UriTooLong: Status = _

Status with code 414 and reason URI Too Long .

pub const UnsupportedMediaType: Status = _

Status with code 415 and reason Unsupported Media Type .

pub const RangeNotSatisfiable: Status = _

Status with code 416 and reason Range Not Satisfiable .

pub const ExpectationFailed: Status = _

Status with code 417 and reason Expectation Failed .

pub const ImATeapot: Status = _

Status with code 418 and reason I’m a teapot .

pub const MisdirectedRequest: Status = _

Status with code 421 and reason Misdirected Request .

pub const UnprocessableEntity: Status = _

Status with code 422 and reason Unprocessable Entity .

pub const Locked: Status = _

Status with code 423 and reason Locked .

pub const FailedDependency: Status = _

Status with code 424 and reason Failed Dependency .

pub const UpgradeRequired: Status = _

Status with code 426 and reason Upgrade Required .

pub const PreconditionRequired: Status = _

Status with code 428 and reason Precondition Required .

pub const TooManyRequests: Status = _

Status with code 429 and reason Too Many Requests .

pub const RequestHeaderFieldsTooLarge: Status = _

Status with code 431 and reason Request Header Fields Too Large .

pub const UnavailableForLegalReasons: Status = _

Status with code 451 and reason Unavailable For Legal Reasons .

pub const InternalServerError: Status = _

Status with code 500 and reason Internal Server Error .

pub const NotImplemented: Status = _

Status with code 501 and reason Not Implemented .

pub const BadGateway: Status = _

Status with code 502 and reason Bad Gateway .

pub const ServiceUnavailable: Status = _

Status with code 503 and reason Service Unavailable .

pub const GatewayTimeout: Status = _

Status with code 504 and reason Gateway Timeout .

pub const HttpVersionNotSupported: Status = _

Status with code 505 and reason HTTP Version Not Supported .

pub const VariantAlsoNegotiates: Status = _

Status with code 506 and reason Variant Also Negotiates .

pub const InsufficientStorage: Status = _

Status with code 507 and reason Insufficient Storage .

pub const LoopDetected: Status = _

Status with code 508 and reason Loop Detected .

pub const NotExtended: Status = _

Status with code 510 and reason Not Extended .

pub const NetworkAuthenticationRequired: Status = _

Status with code 511 and reason Network Authentication Required .

pub fn from_code(code: u16) -> Option<Status>

Returns a Status given a standard status code code. If code is not a known status code, None is returned.


Create a Status from a known code:

use rocket::http::Status;

let not_found = Status::from_code(404);
assert_eq!(not_found, Some(Status::NotFound));

Create a Status from an unknown code:

use rocket::http::Status;

let not_found = Status::from_code(600);

Trait Implementations§


impl Clone for Status


fn clone(&self) -> Status

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more

impl Debug for Status


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

Formats the value using the given formatter. Read more

impl Display for Status


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

Formats the value using the given formatter. Read more

impl Hash for Status


fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more

impl PartialEq for Status


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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.

impl<'r> Responder<'r> for Status

The response generated by Status depends on the status code itself. The table below summarizes the functionality:

Status Code RangeResponse
[400, 599]Forwards to catcher for given status.
100, [200, 205]Empty with status of self.
All others.Invalid. Errors to 500 catcher.

In short, a client or server error status codes will forward to the corresponding error catcher, a successful status code less than 206 or 100 responds with any empty body and the given status code, and all other status code emit an error message and forward to the 500 (internal server error) catcher.


fn respond_to(self, _: &Request<'_>) -> Result<'r>

Returns Ok if a Response could be generated successfully. Otherwise, returns an Err with a failing Status. Read more

impl Copy for Status


impl Eq for Status


impl StructuralPartialEq for Status

Auto Trait Implementations§


impl Freeze for Status


impl RefUnwindSafe for Status


impl Send for Status


impl Sync for Status


impl Unpin for Status


impl UnwindSafe for Status

Blanket Implementations§


impl<T> Any for T
where T: 'static + ?Sized,


fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more

impl<T, I> AsResult<T, I> for T
where I: Input,


fn as_result(self) -> Result<T, ParseErr<I>>


impl<T> Borrow<T> for T
where T: ?Sized,


fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T
where T: ?Sized,


fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,


fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.

impl<T> From<T> for T


fn from(t: T) -> T

Returns the argument unchanged.


impl<T, U> Into<U> for T
where U: From<T>,


fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.


impl<T> IntoCollection<T> for T


fn into_collection<A>(self) -> SmallVec<A>
where A: Array<Item = T>,

Converts self into a collection.

fn mapped<U, F, A>(self, f: F) -> SmallVec<A>
where F: FnMut(T) -> U, A: Array<Item = U>,


impl<T> Same for T


type Output = T

Should always be Self

impl<T> ToOwned for T
where T: Clone,


type Owned = T

The resulting type after obtaining ownership.

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T> ToString for T
where T: Display + ?Sized,


default fn to_string(&self) -> String

Converts the given value to a String. Read more

impl<T, U> TryFrom<U> for T
where U: Into<T>,


type Error = Infallible

The type returned in the event of a conversion error.

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

Performs the conversion.

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,


type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

impl<T> Typeable for T
where T: Any,


fn get_type(&self) -> TypeId

Get the TypeId of this object.

impl<V, T> VZip<V> for T
where V: MultiLane<T>,


fn vzip(self) -> V