@@ -2484,6 +2484,15 @@ impl<'a, T> ExactSizeIterator for ExactChunks<'a, T> {
2484
2484
#[ unstable( feature = "fused" , issue = "35602" ) ]
2485
2485
impl < ' a , T > FusedIterator for ExactChunks < ' a , T > { }
2486
2486
2487
+ #[ doc( hidden) ]
2488
+ unsafe impl < ' a , T > TrustedRandomAccess for ExactChunks < ' a , T > {
2489
+ unsafe fn get_unchecked ( & mut self , i : usize ) -> & ' a [ T ] {
2490
+ let start = i * self . chunk_size ;
2491
+ from_raw_parts ( self . v . as_ptr ( ) . offset ( start as isize ) , self . chunk_size )
2492
+ }
2493
+ fn may_have_side_effect ( ) -> bool { false }
2494
+ }
2495
+
2487
2496
/// An iterator over a slice in (non-overlapping) mutable chunks (`chunk_size`
2488
2497
/// elements at a time). When the slice len is not evenly divided by the chunk
2489
2498
/// size, the last up to `chunk_size-1` elements will be omitted.
@@ -2572,6 +2581,15 @@ impl<'a, T> ExactSizeIterator for ExactChunksMut<'a, T> {
2572
2581
#[ unstable( feature = "fused" , issue = "35602" ) ]
2573
2582
impl < ' a , T > FusedIterator for ExactChunksMut < ' a , T > { }
2574
2583
2584
+ #[ doc( hidden) ]
2585
+ unsafe impl < ' a , T > TrustedRandomAccess for ExactChunksMut < ' a , T > {
2586
+ unsafe fn get_unchecked ( & mut self , i : usize ) -> & ' a mut [ T ] {
2587
+ let start = i * self . chunk_size ;
2588
+ from_raw_parts_mut ( self . v . as_mut_ptr ( ) . offset ( start as isize ) , self . chunk_size )
2589
+ }
2590
+ fn may_have_side_effect ( ) -> bool { false }
2591
+ }
2592
+
2575
2593
//
2576
2594
// Free functions
2577
2595
//
0 commit comments