From ea0309436b55d72f57478ed6f74bf31d000f5366 Mon Sep 17 00:00:00 2001 From: HampusM Date: Sat, 3 Sep 2022 11:49:49 +0200 Subject: refactor: improve DI container cast errors --- src/di_container.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/di_container.rs') diff --git a/src/di_container.rs b/src/di_container.rs index b0e5af1..df95be4 100644 --- a/src/di_container.rs +++ b/src/di_container.rs @@ -384,12 +384,18 @@ impl DIContainer match binding_providable { Providable::Transient(transient_binding) => Ok(SomePtr::Transient( transient_binding.cast::().map_err(|_| { - DIContainerError::CastFailed(type_name::()) + DIContainerError::CastFailed { + interface: type_name::(), + binding_kind: "transient", + } })?, )), Providable::Singleton(singleton_binding) => Ok(SomePtr::Singleton( singleton_binding.cast::().map_err(|_| { - DIContainerError::CastFailed(type_name::()) + DIContainerError::CastFailed { + interface: type_name::(), + binding_kind: "singleton", + } })?, )), #[cfg(feature = "factory")] @@ -401,8 +407,9 @@ impl DIContainer let default_factory = factory_binding .cast::>() - .map_err(|_| { - DIContainerError::CastFailed(type_name::()) + .map_err(|_| DIContainerError::CastFailed { + interface: type_name::(), + binding_kind: "factory", })?; Ok(SomePtr::Transient(default_factory())) -- cgit v1.2.3-18-g5258