From 5478ebb553c5b0df91efde8d9da4b0eaac6c91fa Mon Sep 17 00:00:00 2001 From: Brandon Sanderson Date: Sat, 24 Aug 2013 00:22:40 -0700 Subject: [PATCH] Add with_mem_writer to std::rt::io::mem. This is in many ways a replacement for the current std::io::with_str_writer. --- src/libstd/rt/io/mem.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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]); + } }