use crate::simd::{LaneCount, Simd, SimdElement, SupportedLaneCount}; use core::fmt; macro_rules! impl_fmt_trait { { $($trait:ident,)* } => { $( impl fmt::$trait for Simd where LaneCount: SupportedLaneCount, T: SimdElement + fmt::$trait, { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { #[repr(transparent)] struct Wrapper<'a, T: fmt::$trait>(&'a T); impl fmt::Debug for Wrapper<'_, T> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { self.0.fmt(f) } } f.debug_list() .entries(self.as_array().iter().map(|x| Wrapper(x))) .finish() } } )* } } impl_fmt_trait! { Debug, Binary, LowerExp, UpperExp, Octal, LowerHex, UpperHex, }