pub struct SimpleFactory<T: ?Sized + 'static>(/* private fields */);Expand description
用于创建类型 T 实例的工厂集合。
此结构体包含一个从工厂 ID 到工厂实例的映射,这些工厂实例可以创建
目标类型 T 的装箱实例。工厂在编译时使用 inventory crate 注册,
可以通过 FactoryRegistry::factories() 检索。
类型 T 可以是非固定大小类型(trait 对象),并且必须具有 'static 生命周期。
工厂存储为静态引用,允许它们在线程间共享。
Implementations§
Source§impl<T> SimpleFactory<T>where
T: ?Sized + 'static,
impl<T> SimpleFactory<T>where
T: ?Sized + 'static,
Sourcepub fn create<'a>(
&self,
id: &'a str,
strategy: FactoryFallback,
) -> Result<(&'a str, Box<T>), FactoryError>
pub fn create<'a>( &self, id: &'a str, strategy: FactoryFallback, ) -> Result<(&'a str, Box<T>), FactoryError>
使用指定的回退策略通过工厂模式创建实例。
此函数通过 ID 查找工厂并使用它创建实例。
如果 id 为空,行为取决于 strategy:
NoFallback:返回错误First:使用集合中的第一个工厂Last:使用集合中的最后一个工厂 如果id不为空但找不到工厂,行为由strategy决定。
§参数
id- 要使用的工厂标识符,或空字符串表示默认strategy- 找不到指定 ID 的工厂时使用的策略
§返回值
Ok((&str, Box<T>))- 成功时返回包含使用的工厂 ID 和创建的实例的元组Err(FactoryError)- 如果找不到工厂或没有可用的工厂则返回错误
Auto Trait Implementations§
impl<T> Freeze for SimpleFactory<T>where
T: ?Sized,
impl<T> !RefUnwindSafe for SimpleFactory<T>
impl<T> Send for SimpleFactory<T>where
T: ?Sized,
impl<T> Sync for SimpleFactory<T>where
T: ?Sized,
impl<T> Unpin for SimpleFactory<T>where
T: ?Sized,
impl<T> UnsafeUnpin for SimpleFactory<T>where
T: ?Sized,
impl<T> !UnwindSafe for SimpleFactory<T>
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