pub struct ComponentDefinition {
pub type_id: fn() -> TypeId,
pub type_name: &'static str,
pub scope: fn() -> ComponentScope,
pub dependencies: fn() -> Vec<TypeId>,
pub creator: fn(HashMap<TypeId, Arc<dyn Any + Send + Sync>>) -> Result<Arc<dyn Any + Send + Sync>, ComponentError>,
}Expand description
Definition structure for registering components with the container
ComponentDefinition contains all the metadata and factory functions needed
to create and manage component instances. This structure is typically generated
by the #[derive(Component)] macro but can also be created manually.
§Examples
use verdure_ioc::{ComponentDefinition, ComponentScope, ComponentInstance};
use std::collections::HashMap;
use std::sync::Arc;
use std::any::TypeId;
#[derive(Debug)]
struct MyService {
value: i32,
}
let definition = ComponentDefinition {
type_id: || TypeId::of::<MyService>(),
type_name: "MyService",
scope: || ComponentScope::Singleton,
dependencies: || vec![],
creator: |_deps| Ok(Arc::new(MyService { value: 42 })),
};Fields§
§type_id: fn() -> TypeIdFunction that returns the TypeId of the component
type_name: &'static strHuman-readable name of the component type
scope: fn() -> ComponentScopeFunction that returns the component’s scope
dependencies: fn() -> Vec<TypeId>Function that returns the TypeIds of the component’s dependencies
creator: fn(HashMap<TypeId, Arc<dyn Any + Send + Sync>>) -> Result<Arc<dyn Any + Send + Sync>, ComponentError>Function that creates an instance of the component given its dependencies
Trait Implementations§
Source§impl Debug for ComponentDefinition
impl Debug for ComponentDefinition
impl Collect for ComponentDefinition
Auto Trait Implementations§
impl Freeze for ComponentDefinition
impl RefUnwindSafe for ComponentDefinition
impl Send for ComponentDefinition
impl Sync for ComponentDefinition
impl Unpin for ComponentDefinition
impl UnwindSafe for ComponentDefinition
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