use super::env::Env;
use super::key::Cap;
use std::ops::Deref;
pub trait Needs<T>
where
T: Clone + Send + Sync + 'static,
{
fn need(&self) -> &T;
}
impl<T> Needs<T> for Env
where
T: Clone + Send + Sync + 'static,
{
#[inline]
fn need(&self) -> &T {
self.get::<Cap<T>>()
}
}
impl<T, R> Needs<T> for R
where
T: Clone + Send + Sync + 'static,
R: Deref<Target = Env>,
{
#[inline]
fn need(&self) -> &T {
self.deref().get::<Cap<T>>()
}
}