1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
use super::Decomposable; impl Decomposable<char, std::vec::IntoIter<char>> for String { fn decompose(self) -> std::vec::IntoIter<char> { self.chars().collect::<Vec<_>>().into_iter() } } macro_rules! impl_decomposable_for_integer { ( $t:ty ) => { impl Decomposable<u8, std::vec::IntoIter<u8>> for $t { fn decompose(self) -> std::vec::IntoIter<u8> { let bytes : Box<[u8]> = Box::new(self.to_be_bytes()); bytes.into_vec().into_iter() } } }; } macro_rules! impl_decomposable_for_float { ( $t:ty ) => { impl Decomposable<u8, std::vec::IntoIter<u8>> for $t { fn decompose(self) -> std::vec::IntoIter<u8> { let bytes : Box<[u8]> = Box::new(self.to_bits().to_be_bytes()); bytes.into_vec().into_iter() } } }; } impl_decomposable_for_integer!(u16); impl_decomposable_for_integer!(u32); impl_decomposable_for_integer!(u64); impl_decomposable_for_integer!(u128); impl_decomposable_for_integer!(i16); impl_decomposable_for_integer!(i32); impl_decomposable_for_integer!(i64); impl_decomposable_for_integer!(i128); impl_decomposable_for_integer!(usize); impl_decomposable_for_integer!(isize); impl_decomposable_for_float!(f32); impl_decomposable_for_float!(f64);