#![doc = include_str!("../README.md")]
pub use ::automapper_proc::impl_map_fn;
pub trait AutoMapsTo<Dest> {
fn map_to(self) -> Dest;
}
pub trait AutoMapsFrom<T> {
fn map_from(src: T) -> Self;
}
#[macro_export]
macro_rules! map {
($s: path, $d: path) => {
impl ::automapper::AutoMapsTo<$d> for $s {
fn map_to(self) -> $d {
::automapper::impl_map_fn! {
fn __map($s -> $d);
}
__map(self)
}
}
};
}
impl<D, S> AutoMapsFrom<S> for D
where
S: AutoMapsTo<D>,
{
fn map_from(src: S) -> Self {
S::map_to(src)
}
}