From fdb752700c20b3ce841fed9f8ebf931a163cb221 Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Sat, 30 Dec 2023 18:00:47 -0700 Subject: [PATCH] hybrid-array: unconditional `ArrayOps`/`AssociatedArraySize` impls (#1013) Makes these traits always impl'd for `[T; N]` and `Array` respectively. --- hybrid-array/src/impls.rs | 4 ---- hybrid-array/src/lib.rs | 15 +++++++++------ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/hybrid-array/src/impls.rs b/hybrid-array/src/impls.rs index f578b1d8..efc215e0 100644 --- a/hybrid-array/src/impls.rs +++ b/hybrid-array/src/impls.rs @@ -51,10 +51,6 @@ macro_rules! impl_array_size { impl AssociatedArraySize for [T; $len] { type Size = typenum::$ty; } - - impl AssociatedArraySize for Array { - type Size = typenum::$ty; - } )+ }; } diff --git a/hybrid-array/src/lib.rs b/hybrid-array/src/lib.rs index 2df096c2..9ede91de 100644 --- a/hybrid-array/src/lib.rs +++ b/hybrid-array/src/lib.rs @@ -572,8 +572,7 @@ fn check_slice_length(slice: &[T]) -> Result<(), TryFromSliceEr /// Array operations which are const generic over a given array size. pub trait ArrayOps: - AssociatedArraySize - + Borrow<[T; N]> + Borrow<[T; N]> + BorrowMut<[T; N]> + From<[T; N]> + FromFn @@ -609,10 +608,7 @@ pub trait ArrayOps: F: FnMut(T) -> U; } -impl ArrayOps for [T; N] -where - Self: AssociatedArraySize, -{ +impl ArrayOps for [T; N] { const SIZE: usize = N; #[inline] @@ -703,6 +699,13 @@ pub trait AssociatedArraySize: Sized { type Size: ArraySize; } +impl AssociatedArraySize for Array +where + U: ArraySize, +{ + type Size = U; +} + /// Construct an array type from the given function. pub trait FromFn: Sized { /// Create array using the given callback function for each element.