1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#![crate_name = "bytes"]

/// A trait for objects that provide random and sequential access to bytes.
pub trait Buf {

    fn remaining(&self) -> usize;

    fn bytes<'a>(&'a self) -> &'a [u8];

    fn advance(&mut self, cnt: usize);

    fn has_remaining(&self) -> bool {
        self.remaining() > 0
    }
}

pub trait MutBuf : Buf {
    fn mut_bytes<'a>(&'a mut self) -> &'a mut [u8];
}