/// Fn(Input)->Output
///
/// note that map "borrows" the value, normally you need to implement Clone also
///
/// or, you can `impl Mapper for &'a YourType`
/// Fn(Input)->Output is Mapper<Input>
///
/// due to this, rustc will say "no T:Mapper" as "expect Fn, found T"
/*
use MapCollector as collectable
pub trait Mappable<TMapper>
where TMapper:Mapper<Self::TThis>
{
type TThis;
type TOutput;
fn map(self,mapper:&TMapper)->Self::TOutput;
}
*/