use std::ops::{Deref, DerefMut};
use crate::config::Configurable;
#[derive(Debug, Clone)]
pub struct Component<T>(pub T);
impl<T: Clone> Deref for Component<T> {
type Target = T;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<T: Clone> DerefMut for Component<T> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[derive(Debug, Clone)]
pub struct Config<T>(pub T)
where
T: serde::de::DeserializeOwned + Configurable;
impl<T> Deref for Config<T>
where
T: serde::de::DeserializeOwned + Configurable,
{
type Target = T;
fn deref(&self) -> &Self::Target {
&self.0
}
}