pub trait Provider<T>: Send + Sync {
fn provide(&self) -> crate::result::hex_result::HexResult<T>;
}
#[cfg(test)]
mod tests {
struct TestService {
value: i32,
}
struct TestProvider {
value: i32,
}
impl crate::container::provider::Provider<TestService> for TestProvider {
fn provide(&self) -> crate::result::hex_result::HexResult<TestService> {
Ok(TestService { value: self.value })
}
}
#[test]
fn test_provider_creates_instance() {
let provider = TestProvider { value: 42 };
let service =
<TestProvider as crate::container::provider::Provider<TestService>>::provide(&provider)
.unwrap();
assert_eq!(service.value, 42);
}
#[test]
fn test_provider_creates_multiple_instances() {
let provider = TestProvider { value: 10 };
let service1 =
<TestProvider as crate::container::provider::Provider<TestService>>::provide(&provider)
.unwrap();
let service2 =
<TestProvider as crate::container::provider::Provider<TestService>>::provide(&provider)
.unwrap();
assert_eq!(service1.value, 10);
assert_eq!(service2.value, 10);
}
}