Struct rocket::fairing::AdHoc

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

A ad-hoc fairing that can be created from a function or closure.

This enum can be used to create a fairing from a simple function or closure without creating a new structure or implementing Fairing directly.

§Usage

Use the on_attach, on_launch, on_request, or on_response constructors to create an AdHoc structure from a function or closure. Then, simply attach the structure to the Rocket instance.

§Example

The following snippet creates a Rocket instance with two ad-hoc fairings. The first, a launch fairing named “Launch Printer”, simply prints a message indicating that the application is about to the launch. The second named “Put Rewriter”, a request fairing, rewrites the method of all requests to be PUT.

use rocket::fairing::AdHoc;
use rocket::http::Method;

rocket::ignite()
    .attach(AdHoc::on_launch("Launch Printer", |_| {
        println!("Rocket is about to launch! Exciting! Here we go...");
    }))
    .attach(AdHoc::on_request("Put Rewriter", |req, _| {
        req.set_method(Method::Put);
    }));

Implementations§

source§

impl AdHoc

source

pub fn on_attach<F>(name: &'static str, f: F) -> AdHoc
where F: FnOnce(Rocket) -> Result<Rocket, Rocket> + Send + 'static,

Constructs an AdHoc attach fairing named name. The function f will be called by Rocket when this fairing is attached.

§Example
use rocket::fairing::AdHoc;

// The no-op attach fairing.
let fairing = AdHoc::on_attach("No-Op", |rocket| Ok(rocket));
source

pub fn on_launch<F>(name: &'static str, f: F) -> AdHoc
where F: FnOnce(&Rocket) + Send + 'static,

Constructs an AdHoc launch fairing named name. The function f will be called by Rocket just prior to launching.

§Example
use rocket::fairing::AdHoc;

// A fairing that prints a message just before launching.
let fairing = AdHoc::on_launch("Launch Count", |rocket| {
    println!("Launching in T-3..2..1..");
});
source

pub fn on_request<F>(name: &'static str, f: F) -> AdHoc
where F: Fn(&mut Request<'_>, &Data) + Send + Sync + 'static,

Constructs an AdHoc request fairing named name. The function f will be called by Rocket when a new request is received.

§Example
use rocket::fairing::AdHoc;

// The no-op request fairing.
let fairing = AdHoc::on_request("Dummy", |req, data| {
    // do something with the request and data...
});
source

pub fn on_response<F>(name: &'static str, f: F) -> AdHoc
where F: Fn(&Request<'_>, &mut Response<'_>) + Send + Sync + 'static,

Constructs an AdHoc response fairing named name. The function f will be called by Rocket when a response is ready to be sent.

§Example
use rocket::fairing::AdHoc;

// The no-op response fairing.
let fairing = AdHoc::on_response("Dummy", |req, resp| {
    // do something with the request and pending response...
});

Trait Implementations§

source§

impl Fairing for AdHoc

source§

fn info(&self) -> Info

Returns an Info structure containing the name and Kind of this fairing. The name can be any arbitrary string. Kind must be an ord set of Kind variants. Read more
source§

fn on_attach(&self, rocket: Rocket) -> Result<Rocket, Rocket>

The attach callback. Returns Ok if launch should proceed and Err if launch should be aborted. Read more
source§

fn on_launch(&self, rocket: &Rocket)

The launch callback. Read more
source§

fn on_request(&self, request: &mut Request<'_>, data: &Data)

The request callback. Read more
source§

fn on_response(&self, request: &Request<'_>, response: &mut Response<'_>)

The response callback. Read more

Auto Trait Implementations§

§

impl !Freeze for AdHoc

§

impl !RefUnwindSafe for AdHoc

§

impl Send for AdHoc

§

impl Sync for AdHoc

§

impl Unpin for AdHoc

§

impl !UnwindSafe for AdHoc

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