pub struct ServiceProvider { /* private fields */ }Implementations§
Source§impl ServiceProvider
impl ServiceProvider
Sourcepub fn get<T: ?Sized + Send + Sync + 'static>(&self) -> Arc<T> ⓘ
pub fn get<T: ?Sized + Send + Sync + 'static>(&self) -> Arc<T> ⓘ
Resolve a service by type. Works uniformly for concrete types and trait objects. Panics if not registered.
Sourcepub fn get_optional<T: ?Sized + Send + Sync + 'static>(&self) -> Option<Arc<T>>
pub fn get_optional<T: ?Sized + Send + Sync + 'static>(&self) -> Option<Arc<T>>
Resolve a service by type, returning None if not registered.
Sourcepub fn get_keyed<T: ?Sized + Send + Sync + 'static>(&self, key: &str) -> Arc<T> ⓘ
pub fn get_keyed<T: ?Sized + Send + Sync + 'static>(&self, key: &str) -> Arc<T> ⓘ
Resolve a keyed service by type and key. Panics if not found.
Sourcepub fn get_all<T: ?Sized + Send + Sync + 'static>(&self) -> Vec<Arc<T>>
pub fn get_all<T: ?Sized + Send + Sync + 'static>(&self) -> Vec<Arc<T>>
Return all registered instances of the given type.
Sourcepub fn scope(self: &Arc<Self>) -> Scope
pub fn scope(self: &Arc<Self>) -> Scope
Create a new service scope.
Analogous to IServiceProvider.CreateScope() in MEDI.
Scoped-lifetime services are cached within the returned scope.
Sourcepub fn create_scope(self: &Arc<Self>) -> Scope
pub fn create_scope(self: &Arc<Self>) -> Scope
Alias for scope() with MEDI-inspired naming.
Sourcepub fn get_service<T: ?Sized + Send + Sync + 'static>(&self) -> Option<Arc<T>>
pub fn get_service<T: ?Sized + Send + Sync + 'static>(&self) -> Option<Arc<T>>
Alias for get() with MEDI-inspired naming (GetService<T>()).
Sourcepub fn get_required_service<T: ?Sized + Send + Sync + 'static>(&self) -> Arc<T> ⓘ
pub fn get_required_service<T: ?Sized + Send + Sync + 'static>(&self) -> Arc<T> ⓘ
Resolve a service by type, panicking if not registered.
MEDI-inspired naming (GetRequiredService<T>()).
Sourcepub fn get_services<T: ?Sized + Send + Sync + 'static>(&self) -> Vec<Arc<T>>
pub fn get_services<T: ?Sized + Send + Sync + 'static>(&self) -> Vec<Arc<T>>
Return all registered instances of the given type.
MEDI-inspired naming (GetServices<T>()).
Sourcepub fn get_named<T: Send + Sync + 'static>(&self, name: &str) -> Option<Arc<T>>
pub fn get_named<T: Send + Sync + 'static>(&self, name: &str) -> Option<Arc<T>>
Cross-DLL safe named service resolution (generic).
Sourcepub fn get_named_any(&self, name: &str) -> Option<Arc<dyn Any + Send + Sync>>
pub fn get_named_any(&self, name: &str) -> Option<Arc<dyn Any + Send + Sync>>
Non-generic named resolution; returns Arc<dyn Any> for trait-object dispatch.
Sourcepub fn register_named<T: Send + Sync + 'static>(
&self,
name: &str,
service: Arc<T>,
)
pub fn register_named<T: Send + Sync + 'static>( &self, name: &str, service: Arc<T>, )
Register a named service for cross-DLL plugin access.
Sourcepub fn remove_named(&self, name: &str)
pub fn remove_named(&self, name: &str)
Remove a named service (for plugin unload).
Sourcepub fn rdi_register_named(
&self,
name: &str,
service: Arc<dyn Any + Send + Sync>,
)
pub fn rdi_register_named( &self, name: &str, service: Arc<dyn Any + Send + Sync>, )
Register a named service (for impl_service_locator! macro).
Sourcepub fn rdi_remove_named(&self, name: &str)
pub fn rdi_remove_named(&self, name: &str)
Remove a named service (for impl_service_locator! macro).
Trait Implementations§
Source§impl IServiceLocator for ServiceProvider
impl IServiceLocator for ServiceProvider
Source§impl IServiceResolver for ServiceProvider
impl IServiceResolver for ServiceProvider
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<T: ?Sized + Sync + Send + 'static>(&self) -> Arc<T> ⓘwhere
Self: Sized,
fn get<T: ?Sized + Sync + Send + 'static>(&self) -> Arc<T> ⓘwhere
Self: Sized,
dyn Trait).
Panics if not registered.Source§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,
None if not registered.