Struct shaku_rocket::InjectProvided [−][src]
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
#![feature(proc_macro_hygiene, decl_macro)] #[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() } fn main() { let module = HelloModule::builder().build(); rocket::ignite() .manage(Box::new(module)) .mount("/", routes![hello]) .launch(); }
Trait Implementations
impl<M: ModuleInterface + HasProvider<I> + ?Sized, I: ?Sized> Deref for InjectProvided<M, I>
[src]
impl<'a, 'r, M: ModuleInterface + HasProvider<I> + ?Sized, I: ?Sized> FromRequest<'a, 'r> for InjectProvided<M, I>
[src]
Auto Trait Implementations
impl<M: ?Sized, I: ?Sized> RefUnwindSafe for InjectProvided<M, I> where
I: RefUnwindSafe,
M: RefUnwindSafe,
[src]
I: RefUnwindSafe,
M: RefUnwindSafe,
impl<M: ?Sized, I: ?Sized> Send for InjectProvided<M, I> where
I: Send,
[src]
I: Send,
impl<M: ?Sized, I: ?Sized> Sync for InjectProvided<M, I> where
I: Sync,
[src]
I: Sync,
impl<M: ?Sized, I: ?Sized> Unpin for InjectProvided<M, I> where
M: Unpin,
[src]
M: Unpin,
impl<M: ?Sized, I: ?Sized> UnwindSafe for InjectProvided<M, I> where
I: UnwindSafe,
M: UnwindSafe,
[src]
I: UnwindSafe,
M: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Any for T where
T: Any,
T: Any,
impl<T, I> AsResult<T, I> for T where
I: Input,
I: Input,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T> Interface for T where
T: Send + Sync + Any,
[src]
T: Send + Sync + Any,
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> IntoCollection<T> for T
pub fn into_collection<A>(self) -> SmallVec<A> where
A: Array<Item = T>,
A: Array<Item = T>,
pub fn mapped<U, F, A>(self, f: F) -> SmallVec<A> where
A: Array<Item = U>,
F: FnMut(T) -> U,
A: Array<Item = U>,
F: FnMut(T) -> U,
impl<T> ModuleInterface for T where
T: Send + Sync + Any,
[src]
T: Send + Sync + Any,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Typeable for T where
T: Any,
T: Any,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,