| 241 | type Item = Result<Vec<i64>, CodecError>; |
| 242 | |
| 243 | fn next(&mut self) -> Option<Self::Item> { |
| 244 | if self.blocks_remaining == 0 { |
| 245 | return None; |
| 246 | } |
| 247 | let mut values = Vec::new(); |
| 248 | match decode_block(self.data, self.offset, &mut values, self.current_block) { |
| 249 | Ok(new_offset) => { |
| 250 | self.offset = new_offset; |
| 251 | self.current_block += 1; |
| 252 | self.blocks_remaining -= 1; |
| 253 | Some(Ok(values)) |
| 254 | } |
| 255 | Err(e) => Some(Err(e)), |
| 256 | } |
| 257 | } |
| 258 | |
| 259 | fn size_hint(&self) -> (usize, Option<usize>) { |
| 260 | (self.blocks_remaining, Some(self.blocks_remaining)) |