Struct rocket::Rocket

source ·
pub struct Rocket { /* private fields */ }
Expand description

The main Rocket type: used to mount routes and catchers and launch the application.

Implementations§

source§

impl Rocket

source

pub fn ignite() -> Rocket

Create a new Rocket application using the configuration information in Rocket.toml. If the file does not exist or if there is an I/O error reading the file, the defaults are used. See the config documentation for more information on defaults.

This method is typically called through the rocket::ignite() alias.

§Panics

If there is an error parsing the Rocket.toml file, this functions prints a nice error message and then exits the process.

§Examples
rocket::ignite()
source

pub fn custom(config: Config) -> Rocket

Creates a new Rocket application using the supplied custom configuration. The Rocket.toml file, if present, is ignored. Any environment variables setting config parameters are ignored.

This method is typically called through the rocket::custom alias.

§Examples
use rocket::config::{Config, Environment};

let config = Config::build(Environment::Staging)
    .address("1.2.3.4")
    .port(9234)
    .finalize()?;

let app = rocket::custom(config);
source

pub fn mount<R: Into<Vec<Route>>>(self, base: &str, routes: R) -> Self

Mounts all of the routes in the supplied vector at the given base path. Mounting a route with path path at path base makes the route available at base/path.

§Panics

Panics if the base mount point is not a valid static path: a valid origin URI without dynamic parameters.

Panics if any route’s URI is not a valid origin URI. This kind of panic is guaranteed not to occur if the routes were generated using Rocket’s code generation.

§Examples

Use the routes! macro to mount routes created using the code generation facilities. Requests to the /hello/world URI will be dispatched to the hi route.

#[get("/world")]
fn hi() -> &'static str {
    "Hello!"
}

fn main() {
    rocket::ignite().mount("/hello", routes![hi])
}

Manually create a route named hi at path "/world" mounted at base "/hello". Requests to the /hello/world URI will be dispatched to the hi route.

use rocket::{Request, Route, Data};
use rocket::handler::Outcome;
use rocket::http::Method::*;

fn hi<'r>(req: &'r Request, _: Data) -> Outcome<'r> {
    Outcome::from(req, "Hello!")
}

rocket::ignite().mount("/hello", vec![Route::new(Get, "/world", hi)])
source

pub fn register(self, catchers: Vec<Catcher>) -> Self

Registers all of the catchers in the supplied vector.

§Examples
use rocket::Request;

#[catch(500)]
fn internal_error() -> &'static str {
    "Whoops! Looks like we messed up."
}

#[catch(400)]
fn not_found(req: &Request) -> String {
    format!("I couldn't find '{}'. Try something else?", req.uri())
}

fn main() {
    rocket::ignite()
        .register(catchers![internal_error, not_found])
}
source

pub fn manage<T: Send + Sync + 'static>(self, state: T) -> Self

Add state to the state managed by this instance of Rocket.

This method can be called any number of times as long as each call refers to a different T.

Managed state can be retrieved by any request handler via the State request guard. In particular, if a value of type T is managed by Rocket, adding State<T> to the list of arguments in a request handler instructs Rocket to retrieve the managed value.

§Panics

Panics if state of type T is already being managed.

§Example
use rocket::State;

struct MyValue(usize);

#[get("/")]
fn index(state: State<MyValue>) -> String {
    format!("The stateful value is: {}", state.0)
}

fn main() {
    rocket::ignite()
        .mount("/", routes![index])
        .manage(MyValue(10))
        .launch();
}
source

pub fn attach<F: Fairing>(self, fairing: F) -> Self

Attaches a fairing to this instance of Rocket. If the fairing is an attach fairing, it is run immediately. All other kinds of fairings will be executed at their appropriate time.

§Example
use rocket::Rocket;
use rocket::fairing::AdHoc;

fn main() {
    rocket::ignite()
        .attach(AdHoc::on_launch("Launch Message", |_| {
            println!("Rocket is launching!");
        }))
        .launch();
}
source

pub fn launch(self) -> LaunchError

Starts the application server and begins listening for and dispatching requests to mounted routes and catchers. Unless there is an error, this function does not return and blocks until program termination.

§Error

If there is a problem starting the application, a LaunchError is returned. Note that a value of type LaunchError panics if dropped without first being inspected. See the LaunchError documentation for more information.

§Example
rocket::ignite().launch();
source

pub fn routes<'a>(&'a self) -> impl Iterator<Item = &'a Route> + 'a

Returns an iterator over all of the routes mounted on this instance of Rocket.

§Example
use rocket::Rocket;
use rocket::fairing::AdHoc;

#[get("/hello")]
fn hello() -> &'static str {
    "Hello, world!"
}

fn main() {
    let rocket = rocket::ignite()
        .mount("/", routes![hello])
        .mount("/hi", routes![hello]);

    for route in rocket.routes() {
        match route.base() {
            "/" => assert_eq!(route.uri.path(), "/hello"),
            "/hi" => assert_eq!(route.uri.path(), "/hi/hello"),
            _ => unreachable!("only /hello, /hi/hello are expected")
        }
    }

    assert_eq!(rocket.routes().count(), 2);
}
source

pub fn state<T: Send + Sync + 'static>(&self) -> Option<&T>

Returns Some of the managed state value for the type T if it is being managed by self. Otherwise, returns None.

§Example
#[derive(PartialEq, Debug)]
struct MyState(&'static str);

let rocket = rocket::ignite().manage(MyState("hello!"));
assert_eq!(rocket.state::<MyState>(), Some(&MyState("hello!")));

let client = rocket::local::Client::new(rocket).expect("valid rocket");
assert_eq!(client.rocket().state::<MyState>(), Some(&MyState("hello!")));
source

pub fn config(&self) -> &Config

Returns the active configuration.

§Example
use rocket::Rocket;
use rocket::fairing::AdHoc;

fn main() {
    rocket::ignite()
        .attach(AdHoc::on_launch("Config Printer", |rocket| {
            println!("Rocket launch config: {:?}", rocket.config());
        }))
        .launch();
}

Auto Trait Implementations§

§

impl !Freeze for Rocket

§

impl !RefUnwindSafe for Rocket

§

impl Send for Rocket

§

impl Sync for Rocket

§

impl Unpin for Rocket

§

impl !UnwindSafe for Rocket

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

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

source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

source§

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>,

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

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

Performs the conversion.
source§

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.
source§

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

Performs the conversion.
source§

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

source§

fn get_type(&self) -> TypeId

Get the TypeId of this object.
source§

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

source§

fn vzip(self) -> V