Skip to content

Commit 6fc70f2

Browse files
committed
Forget temporary in iter_inner
1 parent c552fc8 commit 6fc70f2

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

library/core/src/array/iter/iter_inner.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,13 +176,16 @@ impl<T> PolymorphicIter<[MaybeUninit<T>]> {
176176
}
177177

178178
#[inline]
179-
pub(super) fn peek_with<U>(&mut self, func: impl for<'b> FnOnce(Option<&'b T>) -> U) -> U {
179+
pub(super) fn peek_with<U>(&self, func: impl for<'b> FnOnce(Option<&'b T>) -> U) -> U {
180180
let tmp = self.alive.clone().next().map(|idx| {
181181
// SAFETY: `idx` is in self.alive range
182182
unsafe { self.data.get_unchecked(idx).assume_init_read() }
183183
});
184184

185-
func(tmp.as_ref())
185+
let out = func(tmp.as_ref());
186+
// Avoid dropping before the item is consumed
187+
crate::mem::forget(tmp);
188+
out
186189
}
187190

188191
#[inline]

0 commit comments

Comments
 (0)