message: Add helper methods for reading u8 and u64 to `OwnedBytes`
diff: use crate::directory::FileHandle;
  use stable_deref_trait::StableDeref;
  +use std::convert::TryInto;
  use std::mem;
  use std::ops::Deref;
  use std::sync::Arc;
  @@ -95,6 +96,24 @@ impl OwnedBytes {
  pub fn advance(&mut self, advance_len: usize) {
  self.data = &self.data[advance_len..]
  }
  +
  + /// Reads an `u8` from the `OwnedBytes` and advance by one byte.
  + pub fn read_u8(&mut self) -> u8 {
  + assert!(self.len() > 0);
  +
  + let byte = self.as_slice()[0];
  + self.advance(1);
  + byte
  + }
  +
  + /// Reads an `u64` encoded as little-endian from the `OwnedBytes` and advance by 8 bytes.
  + pub fn read_u64(&mut self) -> u64 {
  + assert!(self.len() > 7);
  +
  + let octlet: [u8; 8] = self.as_slice()[..8].try_into().unwrap();
  + self.advance(8);
  + u64::from_le_bytes(octlet)
  + }
  }
  impl fmt::Debug for OwnedBytes {
  @@ -230,6 +249,22 @@ mod tests {
  Ok(())
  }
  + #[test]
  + fn test_owned_bytes_read_u8() -> io::Result<()> {
  + let mut bytes = OwnedBytes::new(b"\xFF".as_ref());
  + assert_eq!(bytes.read_u8(), 255);
  + assert_eq!(bytes.len(), 0);
  + Ok(())
  + }
  +
  + #[test]
  + fn test_owned_bytes_read_u64() -> io::Result<()> {
  + let mut bytes = OwnedBytes::new(b"\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF".as_ref());
  + assert_eq!(bytes.read_u64(), u64::MAX - 255);
  + assert_eq!(bytes.len(), 0);
  + Ok(())
  + }
  +
  #[test]
  fn test_owned_bytes_split() {
  let bytes = OwnedBytes::new(b"abcdefghi".as_ref());
  