diff --git a/src/libstd/rt/io/mem.rs b/src/libstd/rt/io/mem.rs index b278f10aed083..808e9f3a383e1 100644 --- a/src/libstd/rt/io/mem.rs +++ b/src/libstd/rt/io/mem.rs @@ -196,6 +196,14 @@ impl<'self> Seek for BufReader<'self> { fn seek(&mut self, _pos: i64, _style: SeekStyle) { fail!() } } +///Calls a function with a MemWriter and returns +///the writer's stored vector. +pub fn with_mem_writer(writeFn:&fn(&mut MemWriter)) -> ~[u8] { + let mut writer = MemWriter::new(); + writeFn(&mut writer); + writer.inner() +} + #[cfg(test)] mod test { use prelude::*; @@ -255,4 +263,10 @@ mod test { assert_eq!(reader.read(buf), None); assert!(reader.eof()); } + + #[test] + fn test_with_mem_writer() { + let buf = with_mem_writer(|wr| wr.write([1,2,3,4,5,6,7])); + assert_eq!(buf, ~[1,2,3,4,5,6,7]); + } }