1pub trait OutIterator: Iterator {
2 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 {}