pub struct ServiceProviderWrapper { /* private fields */ }Implementations§
Source§impl ServiceProviderWrapper
impl ServiceProviderWrapper
pub fn new(child: Arc<ServiceProvider>, root: Arc<ServiceProvider>) -> Arc<Self> ⓘ
pub fn child(&self) -> &Arc<ServiceProvider> ⓘ
pub fn root(&self) -> &Arc<ServiceProvider> ⓘ
pub fn get<T: ?Sized + Send + Sync + 'static>(&self) -> Result<Arc<T>, RdiError>
pub fn get_optional<T: ?Sized + Send + Sync + 'static>(&self) -> Option<Arc<T>>
pub fn get_keyed<T: ?Sized + Send + Sync + 'static>( &self, key: impl Into<ServiceKey>, ) -> Result<Arc<T>, RdiError>
pub fn get_all<T: ?Sized + Send + Sync + 'static>(&self) -> Vec<Arc<T>>
Sourcepub fn get_all_keyed<T: ?Sized + Send + Sync + 'static>(&self) -> Vec<Arc<T>>
pub fn get_all_keyed<T: ?Sized + Send + Sync + 'static>(&self) -> Vec<Arc<T>>
Unkeyed + keyed registrations are kept separate (MEDI parity): this returns child-then-root keyed instances only.
Sourcepub fn is_registered<T: ?Sized + Send + Sync + 'static>(&self) -> bool
pub fn is_registered<T: ?Sized + Send + Sync + 'static>(&self) -> bool
Whether T is registered in the child or the root (MEDI
IServiceProviderIsService parity).
Sourcepub fn is_registered_keyed<T: ?Sized + Send + Sync + 'static>(
&self,
key: impl Into<ServiceKey>,
) -> bool
pub fn is_registered_keyed<T: ?Sized + Send + Sync + 'static>( &self, key: impl Into<ServiceKey>, ) -> bool
Whether T is registered under key in the child or the root.
pub fn get_named<T: Send + Sync + 'static>(&self, name: &str) -> Option<Arc<T>>
pub fn get_named_any(&self, name: &str) -> Option<Arc<dyn Any + Send + Sync>>
Sourcepub fn get_owned<T: Send + Sync + 'static>(&self) -> Result<T, RdiError>
pub fn get_owned<T: Send + Sync + 'static>(&self) -> Result<T, RdiError>
Resolve owned T (bypass cache, fresh each call). Child-first, root-fallback.
Returns Err if not registered or the service is Singleton.
Sourcepub fn try_get_owned<T: Send + Sync + 'static>(&self) -> Option<T>
pub fn try_get_owned<T: Send + Sync + 'static>(&self) -> Option<T>
Resolve owned T, returning None if not registered or Singleton.
Sourcepub fn get_keyed_owned<T: Send + Sync + 'static>(
&self,
key: impl Into<ServiceKey>,
) -> Result<T, RdiError>
pub fn get_keyed_owned<T: Send + Sync + 'static>( &self, key: impl Into<ServiceKey>, ) -> Result<T, RdiError>
Resolve owned keyed T. Child-first, root-fallback.
Sourcepub fn try_get_keyed_owned<T: Send + Sync + 'static>(
&self,
key: impl Into<ServiceKey>,
) -> Option<T>
pub fn try_get_keyed_owned<T: Send + Sync + 'static>( &self, key: impl Into<ServiceKey>, ) -> Option<T>
Resolve owned keyed T, returning None if not found or Singleton.
Trait Implementations§
Source§impl IProvider for ServiceProviderWrapper
impl IProvider for ServiceProviderWrapper
Source§impl IServiceResolver for ServiceProviderWrapper
impl IServiceResolver for ServiceProviderWrapper
fn get_any(&self, key: &str) -> Option<Arc<dyn Any + Send + Sync>>
fn get_keyed_any( &self, key: &str, variant: &str, ) -> Option<Arc<dyn Any + Send + Sync>>
Source§fn get_keyed_any_key(
&self,
key: &str,
variant: &ServiceKey,
) -> Option<Arc<dyn Any + Send + Sync>>
fn get_keyed_any_key( &self, key: &str, variant: &ServiceKey, ) -> Option<Arc<dyn Any + Send + Sync>>
Typed-keyed resolution by type name (used by
#[inject(key = <expr>)]). Read moreSource§fn try_get_keyed_any_result_key(
&self,
key: &str,
variant: &ServiceKey,
) -> Result<Option<Arc<dyn Any + Send + Sync>>, RdiError>
fn try_get_keyed_any_result_key( &self, key: &str, variant: &ServiceKey, ) -> Result<Option<Arc<dyn Any + Send + Sync>>, RdiError>
Error-reporting typed-keyed lookup (used by required/optional inject
fields). Defaults to
Self::get_keyed_any_key.Source§fn get_keyed_owned_any_key(
&self,
key: &str,
variant: &ServiceKey,
) -> Option<Arc<dyn Any + Send + Sync>>
fn get_keyed_owned_any_key( &self, key: &str, variant: &ServiceKey, ) -> Option<Arc<dyn Any + Send + Sync>>
Typed-keyed owned resolution (bypasses caches; non-singleton only). Read more
Source§fn try_get_keyed_owned_any_key(
&self,
key: &str,
variant: &ServiceKey,
) -> Result<Option<Arc<dyn Any + Send + Sync>>, RdiError>
fn try_get_keyed_owned_any_key( &self, key: &str, variant: &ServiceKey, ) -> Result<Option<Arc<dyn Any + Send + Sync>>, RdiError>
Error-reporting typed-keyed owned lookup. Defaults to
Self::get_keyed_owned_any_key.Source§fn get_keyed_by_type_id(
&self,
tid: TypeId,
key: &str,
) -> Option<Arc<dyn Any + Send + Sync>>
fn get_keyed_by_type_id( &self, tid: TypeId, key: &str, ) -> Option<Arc<dyn Any + Send + Sync>>
TypeId 直查 keyed 版本(默认
None)。 Read moreSource§fn get_all_any(&self, key: &str) -> Vec<Arc<dyn Any + Send + Sync>>
fn get_all_any(&self, key: &str) -> Vec<Arc<dyn Any + Send + Sync>>
Type-erased polymorphic resolution: return all unkeyed registered
instances of the given type, in registration order. Read more
Source§fn get_all_keyed_any(&self, key: &str) -> Vec<Arc<dyn Any + Send + Sync>>
fn get_all_keyed_any(&self, key: &str) -> Vec<Arc<dyn Any + Send + Sync>>
Type-erased polymorphic resolution over keyed registrations only
(MEDI
GetKeyedServices<T>(KeyedService.AnyKey)). Read moreSource§fn get_all_any_result(
&self,
key: &str,
) -> Result<Vec<Arc<dyn Any + Send + Sync>>, RdiError>
fn get_all_any_result( &self, key: &str, ) -> Result<Vec<Arc<dyn Any + Send + Sync>>, RdiError>
Error-reporting variant of
Self::get_all_any, used by the inject
macros for Vec<Arc<T>> fields. Read moreSource§fn get_owned_any(&self, key: &str) -> Option<Arc<dyn Any + Send + Sync>>
fn get_owned_any(&self, key: &str) -> Option<Arc<dyn Any + Send + Sync>>
Type-erased owned resolution: bypass cache, call factory fresh, return
Arc<dyn Any + Send + Sync> (concrete Arc<Arc<T>>). Read moreSource§fn try_get_any_result(
&self,
key: &str,
) -> Result<Option<Arc<dyn Any + Send + Sync>>, RdiError>
fn try_get_any_result( &self, key: &str, ) -> Result<Option<Arc<dyn Any + Send + Sync>>, RdiError>
Fallible, type-erased lookup used by
Self::try_get. Read moreSource§fn try_get_keyed_any_result(
&self,
key: &str,
variant: &str,
) -> Result<Option<Arc<dyn Any + Send + Sync>>, RdiError>
fn try_get_keyed_any_result( &self, key: &str, variant: &str, ) -> Result<Option<Arc<dyn Any + Send + Sync>>, RdiError>
Fallible, type-erased keyed lookup used by
Self::try_get_keyed. Read morefn get_keyed_owned_any( &self, key: &str, variant: &str, ) -> Option<Arc<dyn Any + Send + Sync>>
Source§fn provider_arc(&self) -> Option<Arc<ServiceProvider>>
fn provider_arc(&self) -> Option<Arc<ServiceProvider>>
Return an
Arc<ServiceProvider> for on-demand service resolution. Read moreSource§fn get<T: ?Sized + Sync + Send + 'static>(&self) -> Result<Arc<T>, RdiError>where
Self: Sized,
fn get<T: ?Sized + Sync + Send + 'static>(&self) -> Result<Arc<T>, RdiError>where
Self: Sized,
Resolve a service by type (concrete or
dyn Trait).
Returns Err(RdiError::ServiceNotFound) if not registered. Read moreSource§fn try_get<T: ?Sized + Sync + Send + 'static>(&self) -> Option<Arc<T>>where
Self: Sized,
fn try_get<T: ?Sized + Sync + Send + 'static>(&self) -> Option<Arc<T>>where
Self: Sized,
Resolve a service by type, returning
None if it is not registered or
not resolvable at this point (e.g. a scoped service under root scope
validation, or a disposed provider/scope). Read moreSource§fn get_keyed<T: ?Sized + Sync + Send + 'static>(
&self,
variant: &str,
) -> Result<Arc<T>, RdiError>where
Self: Sized,
fn get_keyed<T: ?Sized + Sync + Send + 'static>(
&self,
variant: &str,
) -> Result<Arc<T>, RdiError>where
Self: Sized,
Resolve a keyed service by type and key. Returns
Err if not found.Source§fn try_get_keyed<T: ?Sized + Sync + Send + 'static>(
&self,
variant: &str,
) -> Option<Arc<T>>where
Self: Sized,
fn try_get_keyed<T: ?Sized + Sync + Send + 'static>(
&self,
variant: &str,
) -> Option<Arc<T>>where
Self: Sized,
Resolve a keyed service by type and key, returning
None if not found or
not resolvable at this point (e.g. root scope validation, disposed
provider/scope). Never panics for framework-level failures.Source§fn get_all<T: ?Sized + Sync + Send + 'static>(&self) -> Vec<Arc<T>>where
Self: Sized,
fn get_all<T: ?Sized + Sync + Send + 'static>(&self) -> Vec<Arc<T>>where
Self: Sized,
Resolve all unkeyed registered instances of
T, in registration
order. Read moreSource§fn get_owned<T: Send + Sync + 'static>(&self) -> Result<T, RdiError>where
Self: Sized,
fn get_owned<T: Send + Sync + 'static>(&self) -> Result<T, RdiError>where
Self: Sized,
Resolve owned
T (bypass cache, fresh each call).
Returns Err if not registered or the service is Singleton.Source§fn try_get_owned<T: Send + Sync + 'static>(&self) -> Option<T>where
Self: Sized,
fn try_get_owned<T: Send + Sync + 'static>(&self) -> Option<T>where
Self: Sized,
Resolve owned
T, returning None if not registered or Singleton.Auto Trait Implementations§
impl !RefUnwindSafe for ServiceProviderWrapper
impl !UnwindSafe for ServiceProviderWrapper
impl Forget for ServiceProviderWrapper
impl Freeze for ServiceProviderWrapper
impl Move for ServiceProviderWrapper
impl Send for ServiceProviderWrapper
impl Sync for ServiceProviderWrapper
impl Unpin for ServiceProviderWrapper
impl UnsafeUnpin for ServiceProviderWrapper
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more