Crate portaldi

source ·
Expand description

PortalDI is an ergonomic, lightweight and compile-time dependency injection library.

§Features

  • Natively async support

    • Support for asynchronous component creation.
    • Components and traits must be thread-safe (Sync + Send) in non Wasm target.
  • Ergonomic apis

    • In most cases, you can use target types directly instead of using containers.
    // for a concrete type.
    let hoge: DI<HogeService> = HogeService::di();
    
    // for a trait. (through DIProvider)
    let hoge: DI<dyn HogeService> = HogeServiceProvider::di();
  • DRY support by macros

    • Almost boiler codes can be generated by proc macros.
    #[derive(DIPortal)]
    struct HogeService {
      foo: DI<FooService>,
      ...,
    }

Modules§

Macros§

Structs§

Traits§

  • Add di methods for DI target types that needs async creation.
  • Provides component instance for trait DI types that needs async creation.
  • Add di methods for DI target types.
  • Provides component instance for trait DI types.

Type Aliases§

  • Represents depencency (component) type.

Attribute Macros§

  • Generate a [DIProvider] or [AsyncDIProvider] implementation. (attribute macro)

Derive Macros§