diff --git a/src/proto/packet.rs b/src/proto/packet.rs index 573ecb5..270977c 100644 --- a/src/proto/packet.rs +++ b/src/proto/packet.rs @@ -87,6 +87,18 @@ impl Packet { } } + pub fn read_array_with(&mut self, read_item: F) -> io::Result> + where F: Fn(&mut Self) -> io::Result + { + let mut vector = Vec::new(); + let num_items = try!(self.read_uint()); + for _ in 0..num_items { + let item = try!(read_item(self)); + vector.push(item); + } + Ok(vector) + } + pub fn bytes_remaining(&self) -> usize { self.bytes.len() - self.cursor }