#[macro_export]
macro_rules! resolve {
($type:ty) => {
$crate::global()
.get::<$type>(None)
.unwrap_or_else(|| {
panic!(
"Failed to resolve required service: {}",
std::any::type_name::<$type>()
)
})
};
($type:ty, $name:expr) => {
$crate::global()
.get::<$type>(Some($name))
.unwrap_or_else(|| {
panic!(
"Failed to resolve required service with name '{}': {}",
$name,
std::any::type_name::<$type>()
)
})
};
(trait $trait_ident:ident) => {
$crate::global()
.get::<dyn $trait_ident>(None)
.unwrap_or_else(|| {
panic!(
"Failed to resolve required trait service: {}",
std::any::type_name::<dyn $trait_ident>()
)
})
};
(trait $trait_ident:ident, $name:expr) => {
$crate::global()
.get::<dyn $trait_ident>(Some($name))
.unwrap_or_else(|| {
panic!(
"Failed to resolve required trait service with name '{}': {}",
$name,
std::any::type_name::<dyn $trait_ident>()
)
})
};
}