From d4dd4c68f82baf4d307012da1b4d6b91d26fb12f Mon Sep 17 00:00:00 2001 From: Palmer Cox
Date: Thu, 13 Feb 2014 23:27:53 -0500
Subject: [PATCH] Create RefReader and RefWriter adaptor structs
RefReader and RefWriter allow a caller to pass a Reader or Writer
instance by reference to generic functions that are expecting arguments
by value.
---
src/libstd/io/mod.rs | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs
index 24b3d1cc4de..c99fe587fc0 100644
--- a/src/libstd/io/mod.rs
+++ b/src/libstd/io/mod.rs
@@ -779,6 +779,13 @@ pub trait Reader {
self.read_byte().map(|i| i as i8)
}
+ /// Creates a wrapper around a mutable reference to the reader.
+ ///
+ /// This is useful to allow applying adaptors while still
+ /// retaining ownership of the original value.
+ fn by_ref<'a>(&'a mut self) -> RefReader<'a, Self> {
+ RefReader { inner: self }
+ }
}
impl Reader for ~Reader {
@@ -789,6 +796,14 @@ impl<'a> Reader for &'a mut Reader {
fn read(&mut self, buf: &mut [u8]) -> IoResult