| 1281 | { |
| 1282 | #[inline] |
| 1283 | fn next_back(&mut self) -> Option<A::Item> { |
| 1284 | if self.removal_start < self.removal_end { |
| 1285 | match self.replacement.next_back() { |
| 1286 | Some(replacement) => { |
| 1287 | let removed = core::mem::replace( |
| 1288 | &mut self.parent[self.removal_end - 1], |
| 1289 | replacement, |
| 1290 | ); |
| 1291 | self.removal_end -= 1; |
| 1292 | Some(removed) |
| 1293 | } |
| 1294 | None => { |
| 1295 | let removed = self.parent.remove(self.removal_end - 1); |
| 1296 | self.removal_end -= 1; |
| 1297 | Some(removed) |
| 1298 | } |
| 1299 | } |
| 1300 | } else { |
| 1301 | None |
| 1302 | } |
| 1303 | } |
| 1304 | } |
| 1305 | |
| 1306 | impl<'p, A: Array, I: Iterator<Item = A::Item>> Drop |