@@ -1005,9 +1005,10 @@ impl<T: [const] Destruct> const Drop for Guard<'_, T> {
10051005 /// dropped.
10061006///
10071007 /// Used for [ `Iterator :: next_chunk`] .
1008+ #[ rustc_const_unstable ( feature = "const_iter" , issue = "92476" ) ]
10081009#[ inline]
1009- pub( crate ) fn iter_next_chunk<T , const N : usize>(
1010- iter: & mut impl Iterator <Item = T >,
1010+ pub( crate ) const fn iter_next_chunk<T , const N : usize>(
1011+ iter: & mut impl [ const ] Iterator <Item = T >,
10111012) -> Result <[ T ; N ] , IntoIter <T , N >> {
10121013 let mut array = [ const { MaybeUninit :: uninit ( ) } ; N ] ;
10131014 let r = iter_next_chunk_erased ( & mut array, iter) ;
@@ -1028,10 +1029,11 @@ pub(crate) fn iter_next_chunk<T, const N: usize>(
10281029///
10291030/// Unfortunately this loop has two exit conditions, the buffer filling up
10301031/// or the iterator running out of items, making it tend to optimize poorly.
1032+ #[ rustc_const_unstable( feature = "const_iter" , issue = "92476" ) ]
10311033#[ inline]
1032- fn iter_next_chunk_erased < T > (
1034+ const fn iter_next_chunk_erased < T > (
10331035 buffer : & mut [ MaybeUninit < T > ] ,
1034- iter : & mut impl Iterator < Item = T > ,
1036+ iter : & mut impl [ const ] Iterator < Item = T > ,
10351037) -> Result < ( ) , usize > {
10361038 // if `Iterator::next` panics, this guard will drop already initialized items
10371039 let mut guard = Guard { array_mut : buffer, initialized : 0 } ;
0 commit comments