pub struct InstanceBuilder { /* private fields */ }
Expand description
InstanceBuilder offers the creation of configured instances. Due to this pattern, you can for example use dependency injection in your tests without exposing those.
The object to be build implements the FromInstanceBuilder trait in its module.
use std::convert::Infallible;
use ::instancebuilder::{BuilderError, InstanceBuilder, FromInstanceBuilder};
struct TestImplementation {
inner: String,
}
struct TestConfig {
key: String,
}
impl FromInstanceBuilder for TestImplementation {
fn try_from_builder(builder: &InstanceBuilder) -> Result<Self, BuilderError> {
let config: &TestConfig = builder.data()?;
Ok(Self {
inner: config.key.clone(),
})
}
}
let config = TestConfig {
key: String::from("help me!"),
};
let mut builder = InstanceBuilder::new();
builder.insert(config);
let instance = builder.build::<TestImplementation>().unwrap();
Implementations§
Source§impl InstanceBuilder
impl InstanceBuilder
pub fn new() -> Self
pub fn insert<D: Any + Send + Sync>(&mut self, data: D)
pub fn data<D: Any + Send + Sync>(&self) -> Result<&D, BuilderError>
pub fn data_opt<D: Any + Send + Sync>(&self) -> Option<&D>
pub fn build<T>(&self) -> Result<T, BuilderError>where
T: FromInstanceBuilder,
Trait Implementations§
Auto Trait Implementations§
impl Freeze for InstanceBuilder
impl !RefUnwindSafe for InstanceBuilder
impl Send for InstanceBuilder
impl Sync for InstanceBuilder
impl Unpin for InstanceBuilder
impl !UnwindSafe for InstanceBuilder
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