protobuf 0.0.3

Rust implementation of Google protocol buffers
use std::io::Writer;
use std::io::Reader;
use std::io;
use std::slice;
use std::result::Ok;
use std::result::Err;

pub struct VecWriter<'a> {
    vec: &'a mut Vec<u8>,
}

impl<'a> VecWriter<'a> {
    pub fn new(vec: &'a mut Vec<u8>) -> VecWriter<'a> {
        VecWriter {
            vec: vec
        }
    }
}

impl<'a> Writer for VecWriter<'a> {
    fn write(&mut self, v: &[u8]) -> io::IoResult<()> {
        self.vec.push_all(v);
        Ok(())
    }
}

#[cfg(test)]
mod test {

    use std::io::Writer;
    use misc::VecWriter;

    #[test]
    fn test_vec_writer() {
        let mut v = Vec::new();
        {
            let mut w = VecWriter::new(&mut v);
            fn foo(writer: &mut Writer) {
                writer.write(b"hi").unwrap();
            }
            foo(&mut w as &mut Writer);
        }
        assert_eq!(b"hi".to_vec(), v);
    }
}