Rollup merge of #91086 - rhysd:issue-91085, r=m-ou-se
Implement `TryFrom<&'_ mut [T]>` for `[T; N]` Fixes #91085.
This commit is contained in:
commit
42f8d4833f
2 changed files with 24 additions and 1 deletions
|
@ -189,6 +189,18 @@ where
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[stable(feature = "try_from_mut_slice_to_array", since = "1.59.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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[stable(feature = "try_from", since = "1.34.0")]
|
#[stable(feature = "try_from", since = "1.34.0")]
|
||||||
impl<'a, T, const N: usize> TryFrom<&'a [T]> for &'a [T; N] {
|
impl<'a, T, const N: usize> TryFrom<&'a [T]> for &'a [T; N] {
|
||||||
type Error = TryFromSliceError;
|
type Error = TryFromSliceError;
|
||||||
|
|
|
@ -28,11 +28,22 @@ fn array_try_from() {
|
||||||
($($N:expr)+) => {
|
($($N:expr)+) => {
|
||||||
$({
|
$({
|
||||||
type Array = [u8; $N];
|
type Array = [u8; $N];
|
||||||
let array: Array = [0; $N];
|
let mut array: Array = [0; $N];
|
||||||
let slice: &[u8] = &array[..];
|
let slice: &[u8] = &array[..];
|
||||||
|
|
||||||
let result = <&Array>::try_from(slice);
|
let result = <&Array>::try_from(slice);
|
||||||
assert_eq!(&array, result.unwrap());
|
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());
|
||||||
})+
|
})+
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue