| 1228 | |
| 1229 | #[inline] |
| 1230 | fn next(&mut self) -> Option<A::Item> { |
| 1231 | if self.removal_start < self.removal_end { |
| 1232 | match self.replacement.next() { |
| 1233 | Some(replacement) => { |
| 1234 | let removed = core::mem::replace( |
| 1235 | &mut self.parent[self.removal_start], |
| 1236 | replacement, |
| 1237 | ); |
| 1238 | self.removal_start += 1; |
| 1239 | Some(removed) |
| 1240 | } |
| 1241 | None => { |
| 1242 | let removed = self.parent.remove(self.removal_start); |
| 1243 | self.removal_end -= 1; |
| 1244 | Some(removed) |
| 1245 | } |
| 1246 | } |
| 1247 | } else { |
| 1248 | None |
| 1249 | } |
| 1250 | } |
| 1251 | |
| 1252 | #[inline] |
| 1253 | fn size_hint(&self) -> (usize, Option<usize>) { |