Skip to main content

Provider

Trait Provider 

Source
pub trait Provider:
    Send
    + Sync
    + 'static {
    // Required method
    fn provide(container: &Container) -> Result<Self, InjectError>
       where Self: Sized;

    // Provided methods
    fn scope() -> Scope { ... }
    fn dependencies() -> Vec<ProviderKey> { ... }
    fn optional_dependencies() -> Vec<ProviderKey> { ... }
    fn definition() -> ProviderDefinition
       where Self: Sized { ... }
}
Expand description

Types generated by #[injectable] can register themselves with a container.

Required Methods§

Source

fn provide(container: &Container) -> Result<Self, InjectError>
where Self: Sized,

Construct a provider using dependencies from the container.

Provided Methods§

Source

fn scope() -> Scope

Return the lifetime used when resolving this provider.

Source

fn dependencies() -> Vec<ProviderKey>

List the provider keys required by this factory.

Source

fn optional_dependencies() -> Vec<ProviderKey>

Optional dependency keys which may be absent at startup.

Source

fn definition() -> ProviderDefinition
where Self: Sized,

Build registration metadata for this provider.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§