use std::marker::PhantomData;
use std::sync::Arc;
use crate::core::Container;
use crate::di::KeyedResolver;
pub struct Keyed<K, S: ?Sized> {
_marker: PhantomData<(K, S)>,
}
impl<K, S: ?Sized + Send + Sync + 'static> Keyed<K, S> {
pub(crate) fn new() -> Self {
Self {
_marker: PhantomData,
}
}
pub fn one(&self, key: K) -> Option<Arc<S>>
where
K: PartialEq,
Container: KeyedResolver<K, S>,
{
Container::resolve_keyed(key)
}
}