diff --git a/tools/kv_typed/src/as_bytes.rs b/tools/kv_typed/src/as_bytes.rs index 4e8cebea2a66c091964ad8024e3fec0c5fc52191..20045fdf081a7eccc868e8639e18840b406e7c97 100644 --- a/tools/kv_typed/src/as_bytes.rs +++ b/tools/kv_typed/src/as_bytes.rs @@ -26,20 +26,16 @@ where } } -macro_rules! impl_as_bytes_for_smallvec { - ($($N:literal),*) => {$( - impl<T> AsBytes for SmallVec<[T; $N]> - where - T: zerocopy::AsBytes, - { - fn as_bytes<D, F: FnMut(&[u8]) -> D>(&self, mut f: F) -> D { - use zerocopy::AsBytes as _; - f((&self[..]).as_bytes()) - } - } - )*}; +impl<T, const N: usize> AsBytes for SmallVec<[T; N]> +where + T: zerocopy::AsBytes, + [T; N]: smallvec::Array<Item = T>, +{ + fn as_bytes<D, F: FnMut(&[u8]) -> D>(&self, mut f: F) -> D { + use zerocopy::AsBytes as _; + f((&self[..]).as_bytes()) + } } -impl_as_bytes_for_smallvec!(1, 2, 4, 8, 16, 32, 64); impl<T> AsBytes for BTreeSet<T> where