Struct shaku_rocket::InjectProvided [−][src]
pub struct InjectProvided<M: ModuleInterface + HasProvider<I> + ?Sized, I: ?Sized>(_, _);
Expand description
Used to create a provided service from a shaku Module
.
The module should be stored in Rocket’s state, in a Box
(It could be
Box<dyn MyModule>
if the module implementation changes at runtime).
Use this InjectProvided
struct as a request guard.
Example
#[macro_use] extern crate rocket; use shaku::{module, Provider}; use shaku_rocket::InjectProvided; trait HelloWorld { fn greet(&self) -> String; } #[derive(Provider)] #[shaku(interface = HelloWorld)] struct HelloWorldImpl; impl HelloWorld for HelloWorldImpl { fn greet(&self) -> String { "Hello, world!".to_owned() } } module! { HelloModule { components = [], providers = [HelloWorldImpl] } } #[get("/")] fn hello(hello_world: InjectProvided<HelloModule, dyn HelloWorld>) -> String { hello_world.greet() } #[rocket::launch] fn rocket() -> _ { let module = HelloModule::builder().build(); rocket::build() .manage(Box::new(module)) .mount("/", routes![hello]) }
Trait Implementations
impl<'r, M: ModuleInterface + HasProvider<I> + ?Sized, I: ?Sized> FromRequest<'r> for InjectProvided<M, I>
[src]
impl<'r, M: ModuleInterface + HasProvider<I> + ?Sized, I: ?Sized> FromRequest<'r> for InjectProvided<M, I>
[src]Auto Trait Implementations
impl<M: ?Sized, I: ?Sized> RefUnwindSafe for InjectProvided<M, I> where
I: RefUnwindSafe,
M: RefUnwindSafe,
impl<M: ?Sized, I: ?Sized> Send for InjectProvided<M, I> where
I: Send,
impl<M: ?Sized, I: ?Sized> Sync for InjectProvided<M, I> where
I: Sync,
impl<M: ?Sized, I: ?Sized> Unpin for InjectProvided<M, I> where
M: Unpin,
impl<M: ?Sized, I: ?Sized> UnwindSafe for InjectProvided<M, I> where
I: UnwindSafe,
M: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
pub fn into_collection<A>(self) -> SmallVec<A> where
A: Array<Item = T>,
pub fn into_collection<A>(self) -> SmallVec<A> where
A: Array<Item = T>,
Converts self
into a collection.
pub fn vzip(self) -> V
impl<T> Any for T where
T: Any,