@@ -1452,6 +1452,58 @@ impl<T, const N: usize> MaybeUninit<[T; N]> {
14521452    } 
14531453} 
14541454
1455+ #[ stable( feature = "more_conversion_trait_impls" ,  since = "CURRENT_RUSTC_VERSION" ) ]  
1456+ impl < T ,  const  N :  usize >  From < [ MaybeUninit < T > ;  N ] >  for  MaybeUninit < [ T ;  N ] >  { 
1457+     #[ inline( always) ]  
1458+     fn  from ( arr :  [ MaybeUninit < T > ;  N ] )  -> Self  { 
1459+         // SAFETY: T and MaybeUninit<T> have the same layout 
1460+         unsafe  {  intrinsics:: transmute_unchecked ( arr)  } 
1461+     } 
1462+ } 
1463+ 
1464+ #[ stable( feature = "more_conversion_trait_impls" ,  since = "CURRENT_RUSTC_VERSION" ) ]  
1465+ impl < T ,  const  N :  usize >  AsRef < [ MaybeUninit < T > ;  N ] >  for  MaybeUninit < [ T ;  N ] >  { 
1466+     #[ inline( always) ]  
1467+     fn  as_ref ( & self )  -> & [ MaybeUninit < T > ;  N ]  { 
1468+         // SAFETY: T and MaybeUninit<T> have the same layout 
1469+         unsafe  {  & * ( self  as  * const  MaybeUninit < [ T ;  N ] >  as  * const  [ MaybeUninit < T > ;  N ] )  } 
1470+     } 
1471+ } 
1472+ 
1473+ #[ stable( feature = "more_conversion_trait_impls" ,  since = "CURRENT_RUSTC_VERSION" ) ]  
1474+ impl < T ,  const  N :  usize >  AsRef < [ MaybeUninit < T > ] >  for  MaybeUninit < [ T ;  N ] >  { 
1475+     #[ inline( always) ]  
1476+     fn  as_ref ( & self )  -> & [ MaybeUninit < T > ]  { 
1477+         & * AsRef :: < [ MaybeUninit < T > ;  N ] > :: as_ref ( self ) 
1478+     } 
1479+ } 
1480+ 
1481+ #[ stable( feature = "more_conversion_trait_impls" ,  since = "CURRENT_RUSTC_VERSION" ) ]  
1482+ impl < T ,  const  N :  usize >  AsMut < [ MaybeUninit < T > ;  N ] >  for  MaybeUninit < [ T ;  N ] >  { 
1483+     #[ inline( always) ]  
1484+     fn  as_mut ( & mut  self )  -> & mut  [ MaybeUninit < T > ;  N ]  { 
1485+         // SAFETY: T and MaybeUninit<T> have the same layout 
1486+         unsafe  {  & mut  * ( self  as  * mut  MaybeUninit < [ T ;  N ] >  as  * mut  [ MaybeUninit < T > ;  N ] )  } 
1487+     } 
1488+ } 
1489+ 
1490+ #[ stable( feature = "more_conversion_trait_impls" ,  since = "CURRENT_RUSTC_VERSION" ) ]  
1491+ impl < T ,  const  N :  usize >  AsMut < [ MaybeUninit < T > ] >  for  MaybeUninit < [ T ;  N ] >  { 
1492+     #[ inline( always) ]  
1493+     fn  as_mut ( & mut  self )  -> & mut  [ MaybeUninit < T > ]  { 
1494+         & mut  * AsMut :: < [ MaybeUninit < T > ;  N ] > :: as_mut ( self ) 
1495+     } 
1496+ } 
1497+ 
1498+ #[ stable( feature = "more_conversion_trait_impls" ,  since = "CURRENT_RUSTC_VERSION" ) ]  
1499+ impl < T ,  const  N :  usize >  From < MaybeUninit < [ T ;  N ] > >  for  [ MaybeUninit < T > ;  N ]  { 
1500+     #[ inline( always) ]  
1501+     fn  from ( arr :  MaybeUninit < [ T ;  N ] > )  -> Self  { 
1502+         // SAFETY: T and MaybeUninit<T> have the same layout 
1503+         unsafe  {  intrinsics:: transmute_unchecked ( arr)  } 
1504+     } 
1505+ } 
1506+ 
14551507impl < T ,  const  N :  usize >  [ MaybeUninit < T > ;  N ]  { 
14561508    /// Transposes a `[MaybeUninit<T>; N]` into a `MaybeUninit<[T; N]>`. 
14571509/// 
0 commit comments