@@ -1003,9 +1003,10 @@ impl<T: [const] Destruct> const Drop for Guard<'_, T> {
10031003 /// dropped.
10041004///
10051005 /// Used for [ `Iterator :: next_chunk`] .
1006+ #[ rustc_const_unstable ( feature = "const_iter" , issue = "92476" ) ]
10061007#[ inline]
1007- pub( crate ) fn iter_next_chunk<T , const N : usize>(
1008- iter: & mut impl Iterator <Item = T >,
1008+ pub( crate ) const fn iter_next_chunk<T , const N : usize>(
1009+ iter: & mut impl [ const ] Iterator <Item = T >,
10091010) -> Result <[ T ; N ] , IntoIter <T , N >> {
10101011 let mut array = [ const { MaybeUninit :: uninit ( ) } ; N ] ;
10111012 let r = iter_next_chunk_erased ( & mut array, iter) ;
@@ -1026,10 +1027,11 @@ pub(crate) fn iter_next_chunk<T, const N: usize>(
10261027///
10271028/// Unfortunately this loop has two exit conditions, the buffer filling up
10281029/// or the iterator running out of items, making it tend to optimize poorly.
1030+ #[ rustc_const_unstable( feature = "const_iter" , issue = "92476" ) ]
10291031#[ inline]
1030- fn iter_next_chunk_erased < T > (
1032+ const fn iter_next_chunk_erased < T > (
10311033 buffer : & mut [ MaybeUninit < T > ] ,
1032- iter : & mut impl Iterator < Item = T > ,
1034+ iter : & mut impl [ const ] Iterator < Item = T > ,
10331035) -> Result < ( ) , usize > {
10341036 // if `Iterator::next` panics, this guard will drop already initialized items
10351037 let mut guard = Guard { array_mut : buffer, initialized : 0 } ;
0 commit comments