rdvec/
iter.rs

1pub trait OutIterator: Iterator {
2    /// # Safety
3    ///
4    /// `out` must point to properly aligned memory valid for writing.
5    unsafe fn next_out<'a>(&mut self, out: *mut Self::Item) -> Option<&'a mut Self::Item>;
6}
7
8impl<I> OutIterator for I
9where
10    I: Iterator,
11{
12    #[inline]
13    unsafe fn next_out<'a>(&mut self, out: *mut Self::Item) -> Option<&'a mut Self::Item> {
14        unsafe {
15            out.write(self.next()?);
16            out.as_mut()
17        }
18    }
19}
20
21pub trait ExactSizeOutIterator: OutIterator + ExactSizeIterator {}
22
23impl<I> ExactSizeOutIterator for I where I: OutIterator + ExactSizeIterator {}