It is unclear that MemReader operates on an owned vector while BufReader on a borrowed vector. For the reader I think there is no difference between a MemReader and a BufReader. MemReader::new([1u8]) can be replaced by BufReader::new([1u8].as_slice()). Only the MemWriter and BufWriter differ in that MemWriter can grow the buffer.
How about this naming: BufReader, BufWriter, GrowableBufWriter?