|
40 | 40 | #![warn(missing_docs)]
|
41 | 41 | #![cfg_attr(not(feature = "std"), no_std)]
|
42 | 42 |
|
43 |
| -use core::{cmp, marker::PhantomData}; |
| 43 | +use core::cmp; |
44 | 44 |
|
45 | 45 | mod sources;
|
46 | 46 | pub use crate::sources::{convert, Convert};
|
@@ -595,15 +595,12 @@ pub trait StreamingIteratorMut: StreamingIterator {
|
595 | 595 |
|
596 | 596 | /// Creates an iterator which flattens nested streaming iterators.
|
597 | 597 | #[inline]
|
598 |
| - fn flatten(self) -> Flatten<Self, Self::Item> |
| 598 | + fn flatten(self) -> Flatten<Self> |
599 | 599 | where
|
600 | 600 | Self: Sized,
|
601 | 601 | Self::Item: StreamingIterator + Sized,
|
602 | 602 | {
|
603 |
| - Flatten { |
604 |
| - iter: self, |
605 |
| - _inner: PhantomData, |
606 |
| - } |
| 603 | + Flatten { iter: self } |
607 | 604 | }
|
608 | 605 | }
|
609 | 606 |
|
@@ -1274,15 +1271,14 @@ where
|
1274 | 1271 |
|
1275 | 1272 | /// A streaming iterator that flattens nested streaming iterators.
|
1276 | 1273 | #[derive(Debug)]
|
1277 |
| -pub struct Flatten<I, J> { |
| 1274 | +pub struct Flatten<I> { |
1278 | 1275 | iter: I,
|
1279 |
| - _inner: PhantomData<J>, |
1280 | 1276 | }
|
1281 | 1277 |
|
1282 |
| -impl<I, J> StreamingIterator for Flatten<I, J> |
| 1278 | +impl<I, J> StreamingIterator for Flatten<I> |
1283 | 1279 | where
|
1284 | 1280 | I: StreamingIteratorMut<Item = J>,
|
1285 |
| - J: StreamingIterator, |
| 1281 | + for<'a> J: StreamingIterator + 'a, |
1286 | 1282 | {
|
1287 | 1283 | type Item = J::Item;
|
1288 | 1284 |
|
@@ -1316,10 +1312,10 @@ where
|
1316 | 1312 | }
|
1317 | 1313 | }
|
1318 | 1314 |
|
1319 |
| -impl<I, J> StreamingIteratorMut for Flatten<I, J> |
| 1315 | +impl<I, J> StreamingIteratorMut for Flatten<I> |
1320 | 1316 | where
|
1321 | 1317 | I: StreamingIteratorMut<Item = J>,
|
1322 |
| - J: StreamingIteratorMut, |
| 1318 | + for<'a> J: StreamingIteratorMut + 'a, |
1323 | 1319 | {
|
1324 | 1320 | #[inline]
|
1325 | 1321 | fn get_mut(&mut self) -> Option<&mut Self::Item> {
|
|
0 commit comments