/// Fn(Input)->Output
/// Fn(Input)->Output is Mapper<Input>
///
/// due to this, rustc will say "no T:Mapper" as "expect Fn, found T"
/// FnOnce(Input)->Output
/// FnOnce(Input)->Output is MapperOnce<Input>
///
/// due to this, rustc will say "no T:MapperOnce" as "expect FnOnce, found T"