about summary refs log tree commit diff
path: root/src/libstd/rt
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-09-11 12:16:01 -0700
committerbors <bors@rust-lang.org>2013-09-11 12:16:01 -0700
commitc8f69dd2a4cf80f98e1a1ad37febb4cc9948f5ee (patch)
treec328c0664ac29e53acefd61f4a0b57feba363e57 /src/libstd/rt
parentf711650b8d05afae6feb80b4f9174a2669b2b4e9 (diff)
parent5478ebb553c5b0df91efde8d9da4b0eaac6c91fa (diff)
downloadrust-c8f69dd2a4cf80f98e1a1ad37febb4cc9948f5ee.tar.gz
rust-c8f69dd2a4cf80f98e1a1ad37febb4cc9948f5ee.zip
auto merge of #9038 : singingboyo/rust/with-mem-writer, r=anasazi
This is in many ways a replacement for the current std::io::with_str_writer.
Diffstat (limited to 'src/libstd/rt')
-rw-r--r--src/libstd/rt/io/mem.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libstd/rt/io/mem.rs b/src/libstd/rt/io/mem.rs
index b278f10aed0..808e9f3a383 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]);
+    }
 }