Skip to content

Commit 4963afd

Browse files
committed
auto merge of #18891 : erickt/rust/deprecate-as-ref, r=alexcrichton
It seems odd that the `AsRefReader`/`AsRefWriter` have the single method `by_ref()`. This creates the new traits `ByRefReader`/`ByRefWriter` and deprecates the old traits.
2 parents bb2168c + 0ab861a commit 4963afd

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

src/libstd/io/mod.rs

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -849,6 +849,7 @@ pub trait Reader {
849849
}
850850

851851
/// A reader which can be converted to a RefReader.
852+
#[deprecated = "use ByRefReader instead"]
852853
pub trait AsRefReader {
853854
/// Creates a wrapper around a mutable reference to the reader.
854855
///
@@ -857,12 +858,28 @@ pub trait AsRefReader {
857858
fn by_ref<'a>(&'a mut self) -> RefReader<'a, Self>;
858859
}
859860

861+
#[allow(deprecated)]
860862
impl<T: Reader> AsRefReader for T {
861863
fn by_ref<'a>(&'a mut self) -> RefReader<'a, T> {
862864
RefReader { inner: self }
863865
}
864866
}
865867

868+
/// A reader which can be converted to a RefReader.
869+
pub trait ByRefReader {
870+
/// Creates a wrapper around a mutable reference to the reader.
871+
///
872+
/// This is useful to allow applying adaptors while still
873+
/// retaining ownership of the original value.
874+
fn by_ref<'a>(&'a mut self) -> RefReader<'a, Self>;
875+
}
876+
877+
impl<T: Reader> ByRefReader for T {
878+
fn by_ref<'a>(&'a mut self) -> RefReader<'a, T> {
879+
RefReader { inner: self }
880+
}
881+
}
882+
866883
/// A reader which can be converted to bytes.
867884
pub trait BytesReader {
868885
/// Create an iterator that reads a single byte on
@@ -925,7 +942,7 @@ unsafe fn slice_vec_capacity<'a, T>(v: &'a mut Vec<T>, start: uint, end: uint) -
925942
/// # fn process_input<R: Reader>(r: R) {}
926943
/// # fn foo() {
927944
/// use std::io;
928-
/// use std::io::AsRefReader;
945+
/// use std::io::ByRefReader;
929946
/// use std::io::util::LimitReader;
930947
///
931948
/// let mut stream = io::stdin();
@@ -1211,6 +1228,7 @@ pub trait Writer {
12111228
}
12121229

12131230
/// A writer which can be converted to a RefWriter.
1231+
#[deprecated = "use ByRefWriter instead"]
12141232
pub trait AsRefWriter {
12151233
/// Creates a wrapper around a mutable reference to the writer.
12161234
///
@@ -1220,12 +1238,29 @@ pub trait AsRefWriter {
12201238
fn by_ref<'a>(&'a mut self) -> RefWriter<'a, Self>;
12211239
}
12221240

1241+
#[allow(deprecated)]
12231242
impl<T: Writer> AsRefWriter for T {
12241243
fn by_ref<'a>(&'a mut self) -> RefWriter<'a, T> {
12251244
RefWriter { inner: self }
12261245
}
12271246
}
12281247

1248+
/// A writer which can be converted to a RefWriter.
1249+
pub trait ByRefWriter {
1250+
/// Creates a wrapper around a mutable reference to the writer.
1251+
///
1252+
/// This is useful to allow applying wrappers while still
1253+
/// retaining ownership of the original value.
1254+
#[inline]
1255+
fn by_ref<'a>(&'a mut self) -> RefWriter<'a, Self>;
1256+
}
1257+
1258+
impl<T: Writer> ByRefWriter for T {
1259+
fn by_ref<'a>(&'a mut self) -> RefWriter<'a, T> {
1260+
RefWriter { inner: self }
1261+
}
1262+
}
1263+
12291264
impl<'a> Writer for Box<Writer+'a> {
12301265
#[inline]
12311266
fn write(&mut self, buf: &[u8]) -> IoResult<()> {
@@ -1256,7 +1291,7 @@ impl<'a> Writer for &'a mut Writer+'a {
12561291
/// # fn process_input<R: Reader>(r: R) {}
12571292
/// # fn foo () {
12581293
/// use std::io::util::TeeReader;
1259-
/// use std::io::{stdin, MemWriter, AsRefWriter};
1294+
/// use std::io::{stdin, MemWriter, ByRefWriter};
12601295
///
12611296
/// let mut output = MemWriter::new();
12621297
///

src/libstd/io/util.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ impl<T: Iterator<u8>> Reader for IterReader<T> {
265265

266266
#[cfg(test)]
267267
mod test {
268-
use io::{MemReader, MemWriter, BufReader, AsRefReader};
268+
use io::{MemReader, MemWriter, BufReader, ByRefReader};
269269
use io;
270270
use boxed::Box;
271271
use super::*;

0 commit comments

Comments
 (0)