use super::Kartesian; use num::*; pub trait MaximumFromMap { fn maximum(map: &Vec>) -> Kartesian; } macro_rules! impl_maximum { ($type:ident) => { impl MaximumFromMap<$type> for Kartesian<$type> { fn maximum(map: &Vec>) -> Kartesian<$type> { Kartesian { x: map.len() as $type, y: map[0].len() as $type, } } } }; } impl_maximum!(u8); impl_maximum!(u16); impl_maximum!(u32); impl_maximum!(u64); impl_maximum!(u128); impl MaximumFromMap for Kartesian { fn maximum(map: &Vec>) -> Kartesian { Kartesian { x: map.len(), y: map[0].len(), } } }