Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 1e71d2e

Browse files
committed
Added W: Writer bound to BufferedWriter<W> to avoid specialized Drop impl.
1 parent 1249e60 commit 1e71d2e

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/libstd/old_io/buffered.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -148,14 +148,14 @@ impl<R: Reader> Reader for BufferedReader<R> {
148148
/// writer.write_str("hello, world").unwrap();
149149
/// writer.flush().unwrap();
150150
/// ```
151-
pub struct BufferedWriter<W> {
151+
pub struct BufferedWriter<W: Writer> {
152152
inner: Option<W>,
153153
buf: Vec<u8>,
154154
pos: uint
155155
}
156156

157157
#[stable(feature = "rust1", since = "1.0.0")]
158-
impl<W> fmt::Debug for BufferedWriter<W> where W: fmt::Debug {
158+
impl<W: Writer> fmt::Debug for BufferedWriter<W> where W: fmt::Debug {
159159
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
160160
write!(fmt, "BufferedWriter {{ writer: {:?}, buffer: {}/{} }}",
161161
self.inner.as_ref().unwrap(), self.pos, self.buf.len())
@@ -250,12 +250,12 @@ impl<W: Writer> Drop for BufferedWriter<W> {
250250
/// `'\n'`) is detected.
251251
///
252252
/// This writer will be flushed when it is dropped.
253-
pub struct LineBufferedWriter<W> {
253+
pub struct LineBufferedWriter<W: Writer> {
254254
inner: BufferedWriter<W>,
255255
}
256256

257257
#[stable(feature = "rust1", since = "1.0.0")]
258-
impl<W> fmt::Debug for LineBufferedWriter<W> where W: fmt::Debug {
258+
impl<W: Writer> fmt::Debug for LineBufferedWriter<W> where W: fmt::Debug {
259259
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
260260
write!(fmt, "LineBufferedWriter {{ writer: {:?}, buffer: {}/{} }}",
261261
self.inner.inner, self.inner.pos, self.inner.buf.len())
@@ -299,16 +299,16 @@ impl<W: Writer> Writer for LineBufferedWriter<W> {
299299
fn flush(&mut self) -> IoResult<()> { self.inner.flush() }
300300
}
301301

302-
struct InternalBufferedWriter<W>(BufferedWriter<W>);
302+
struct InternalBufferedWriter<W: Writer>(BufferedWriter<W>);
303303

304-
impl<W> InternalBufferedWriter<W> {
304+
impl<W: Writer> InternalBufferedWriter<W> {
305305
fn get_mut<'a>(&'a mut self) -> &'a mut BufferedWriter<W> {
306306
let InternalBufferedWriter(ref mut w) = *self;
307307
return w;
308308
}
309309
}
310310

311-
impl<W: Reader> Reader for InternalBufferedWriter<W> {
311+
impl<W: Reader + Writer> Reader for InternalBufferedWriter<W> {
312312
fn read(&mut self, buf: &mut [u8]) -> IoResult<uint> {
313313
self.get_mut().inner.as_mut().unwrap().read(buf)
314314
}
@@ -343,12 +343,12 @@ impl<W: Reader> Reader for InternalBufferedWriter<W> {
343343
/// Err(e) => println!("error reading: {}", e)
344344
/// }
345345
/// ```
346-
pub struct BufferedStream<S> {
346+
pub struct BufferedStream<S: Writer> {
347347
inner: BufferedReader<InternalBufferedWriter<S>>
348348
}
349349

350350
#[stable(feature = "rust1", since = "1.0.0")]
351-
impl<S> fmt::Debug for BufferedStream<S> where S: fmt::Debug {
351+
impl<S: Writer> fmt::Debug for BufferedStream<S> where S: fmt::Debug {
352352
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
353353
let reader = &self.inner;
354354
let writer = &self.inner.inner.0;

0 commit comments

Comments
 (0)