Skip to content

Commit 26a79e3

Browse files
committed
Added Write bounds to avoid a specialized Drop impl for BufWriter.
1 parent 0adab50 commit 26a79e3

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/libstd/io/buffered.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ impl<R> fmt::Debug for BufReader<R> where R: fmt::Debug {
120120
///
121121
/// The buffer will be written out when the writer is dropped.
122122
#[stable(feature = "rust1", since = "1.0.0")]
123-
pub struct BufWriter<W> {
123+
pub struct BufWriter<W: Write> {
124124
inner: Option<W>,
125125
buf: Vec<u8>,
126126
}
@@ -220,7 +220,7 @@ impl<W: Write> Write for BufWriter<W> {
220220
}
221221

222222
#[stable(feature = "rust1", since = "1.0.0")]
223-
impl<W> fmt::Debug for BufWriter<W> where W: fmt::Debug {
223+
impl<W: Write> fmt::Debug for BufWriter<W> where W: fmt::Debug {
224224
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
225225
write!(fmt, "BufWriter {{ writer: {:?}, buffer: {}/{} }}",
226226
self.inner.as_ref().unwrap(), self.buf.len(), self.buf.capacity())
@@ -276,7 +276,7 @@ impl<W> fmt::Display for IntoInnerError<W> {
276276
///
277277
/// The buffer will be written out when the writer is dropped.
278278
#[stable(feature = "rust1", since = "1.0.0")]
279-
pub struct LineWriter<W> {
279+
pub struct LineWriter<W: Write> {
280280
inner: BufWriter<W>,
281281
}
282282

@@ -335,24 +335,24 @@ impl<W: Write> Write for LineWriter<W> {
335335
}
336336

337337
#[stable(feature = "rust1", since = "1.0.0")]
338-
impl<W> fmt::Debug for LineWriter<W> where W: fmt::Debug {
338+
impl<W: Write> fmt::Debug for LineWriter<W> where W: fmt::Debug {
339339
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
340340
write!(fmt, "LineWriter {{ writer: {:?}, buffer: {}/{} }}",
341341
self.inner.inner, self.inner.buf.len(),
342342
self.inner.buf.capacity())
343343
}
344344
}
345345

346-
struct InternalBufWriter<W>(BufWriter<W>);
346+
struct InternalBufWriter<W: Write>(BufWriter<W>);
347347

348-
impl<W> InternalBufWriter<W> {
348+
impl<W: Read + Write> InternalBufWriter<W> {
349349
fn get_mut(&mut self) -> &mut BufWriter<W> {
350350
let InternalBufWriter(ref mut w) = *self;
351351
return w;
352352
}
353353
}
354354

355-
impl<W: Read> Read for InternalBufWriter<W> {
355+
impl<W: Read + Write> Read for InternalBufWriter<W> {
356356
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
357357
self.get_mut().inner.as_mut().unwrap().read(buf)
358358
}
@@ -367,7 +367,7 @@ impl<W: Read> Read for InternalBufWriter<W> {
367367
///
368368
/// The output buffer will be written out when this stream is dropped.
369369
#[stable(feature = "rust1", since = "1.0.0")]
370-
pub struct BufStream<S> {
370+
pub struct BufStream<S: Write> {
371371
inner: BufReader<InternalBufWriter<S>>
372372
}
373373

@@ -448,7 +448,7 @@ impl<S: Read + Write> Write for BufStream<S> {
448448
}
449449

450450
#[stable(feature = "rust1", since = "1.0.0")]
451-
impl<S> fmt::Debug for BufStream<S> where S: fmt::Debug {
451+
impl<S: Write> fmt::Debug for BufStream<S> where S: fmt::Debug {
452452
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
453453
let reader = &self.inner;
454454
let writer = &self.inner.inner.0;

0 commit comments

Comments
 (0)