pub struct Container { /* private fields */ }Expand description
Type-indexed dependency container.
Implementations§
Source§impl Container
impl Container
Sourcepub fn request_scope(&self) -> RequestScope<'_>
pub fn request_scope(&self) -> RequestScope<'_>
Creates a request scope for request-lifetime providers.
Sourcepub fn register_singleton<T>(&mut self, value: T) -> Result<()>
pub fn register_singleton<T>(&mut self, value: T) -> Result<()>
Registers a concrete singleton value.
Sourcepub fn override_singleton<T>(&mut self, value: T) -> Result<()>
pub fn override_singleton<T>(&mut self, value: T) -> Result<()>
Replaces a singleton provider, intended for explicit test overrides.
Sourcepub fn register_factory<T, F>(
&mut self,
lifetime: ProviderLifetime,
factory: F,
) -> Result<()>
pub fn register_factory<T, F>( &mut self, lifetime: ProviderLifetime, factory: F, ) -> Result<()>
Registers a provider factory.
Sourcepub fn register_singleton_factory<T, F>(&mut self, factory: F) -> Result<()>
pub fn register_singleton_factory<T, F>(&mut self, factory: F) -> Result<()>
Registers a singleton provider factory.
Sourcepub fn register_transient<T, F>(&mut self, factory: F) -> Result<()>
pub fn register_transient<T, F>(&mut self, factory: F) -> Result<()>
Registers a transient provider factory.
Sourcepub fn register_request<T, F>(&mut self, factory: F) -> Result<()>
pub fn register_request<T, F>(&mut self, factory: F) -> Result<()>
Registers a request-lifetime provider factory.
Sourcepub fn register_request_scoped<T, F>(&mut self, factory: F) -> Result<()>
pub fn register_request_scoped<T, F>(&mut self, factory: F) -> Result<()>
Registers a request-lifetime provider factory that resolves dependencies through the active request scope.
Sourcepub fn optional<T>(&self) -> Result<Optional<T>>
pub fn optional<T>(&self) -> Result<Optional<T>>
Resolves an optional typed dependency reference.
Missing providers become Optional::new(None), while registered providers
that fail to construct still return their original error.
Sourcepub fn eagerly_resolve_singletons(&self) -> Result<()>
pub fn eagerly_resolve_singletons(&self) -> Result<()>
Eagerly constructs every registered singleton provider and caches it.
Singletons are otherwise constructed lazily on first resolution, which
uses a blocking Condvar wait when two callers race to construct the
same provider. Calling this at startup pre-constructs each singleton so
later resolutions (including from async request handlers) hit the cached
value and never reach that wait, avoiding an async-runtime worker
stalling on first use. Transient and request-lifetime providers are
skipped.
A singleton whose factory errors or panics will do so here, failing startup fast instead of on first request.