Attribute Macro provider

Source
#[provider]
Expand description

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

This attribute must be on DIPortal or [AsyncDIPortal] impl block.

trait HogeI {}

struct Hoge {}

// When you needs manual creation logic, define DIPortal implementation.
#[portaldi::provider(HogeI)] // HogeIProvider will be generated.
impl DIPortal for Hoge {
  ...
}

For a trait with generics,

trait HogeI<A> {}

struct Hoge {}

// When you needs manual creation logic, define DIPortal implementation.
#[portaldi::provider(HogeI<A>)] // HogeIAProvider will be generated.
impl DIPortal for Hoge {
  ...
}

You can also generate [DIProvider] for Self type.

struct Hoge {}

// When you needs manual creation logic, define DIPortal implementation.
#[portaldi::provider(Self)] // HogeProvider will be generated.
impl DIPortal for Hoge {
  ...
}