}
}
+#[stable(feature = "try_from_mut_slice_to_array", since = "1.57.0")]
+impl<T, const N: usize> TryFrom<&mut [T]> for [T; N]
+where
+ T: Copy,
+{
+ type Error = TryFromSliceError;
+
+ fn try_from(slice: &mut [T]) -> Result<[T; N], TryFromSliceError> {
+ <Self>::try_from(slice.as_ref())
+ }
+}
+
#[stable(feature = "try_from", since = "1.34.0")]
impl<'a, T, const N: usize> TryFrom<&'a [T]> for &'a [T; N] {
type Error = TryFromSliceError;
($($N:expr)+) => {
$({
type Array = [u8; $N];
- let array: Array = [0; $N];
+ let mut array: Array = [0; $N];
let slice: &[u8] = &array[..];
let result = <&Array>::try_from(slice);
assert_eq!(&array, result.unwrap());
+
+ let result = <Array>::try_from(slice);
+ assert_eq!(&array, &result.unwrap());
+
+ let mut_slice: &mut [u8] = &mut array[..];
+ let result = <&mut Array>::try_from(mut_slice);
+ assert_eq!(&[0; $N], result.unwrap());
+
+ let mut_slice: &mut [u8] = &mut array[..];
+ let result = <Array>::try_from(mut_slice);
+ assert_eq!(&array, &result.unwrap());
})+
}
}