(&mut self, len: usize)
| 17 | } |
| 18 | |
| 19 | fn take_slice(&mut self, len: usize) -> Result<&'a [u8]> { |
| 20 | ensure!( |
| 21 | self.offset + len <= self.buffer.len(), |
| 22 | "buffer underflow (need {len} bytes, have {})", |
| 23 | self.buffer.len().saturating_sub(self.offset) |
| 24 | ); |
| 25 | let slice = &self.buffer[self.offset..self.offset + len]; |
| 26 | self.offset += len; |
| 27 | Ok(slice) |
| 28 | } |
| 29 | |
| 30 | pub fn int16(&mut self) -> Result<i16> { |
| 31 | let bytes = self.take_slice(2)?; |