|
13 | 13 | //! Buffering wrappers for I/O traits |
14 | 14 |
|
15 | 15 | use cmp; |
| 16 | +use fmt; |
16 | 17 | use io::{Reader, Writer, Stream, Buffer, DEFAULT_BUF_SIZE, IoResult}; |
17 | 18 | use iter::{IteratorExt, ExactSizeIterator}; |
18 | 19 | use ops::Drop; |
@@ -51,6 +52,13 @@ pub struct BufferedReader<R> { |
51 | 52 | cap: uint, |
52 | 53 | } |
53 | 54 |
|
| 55 | +impl<R> fmt::Show for BufferedReader<R> where R: fmt::Show { |
| 56 | + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { |
| 57 | + write!(fmt, "BufferedReader {{ reader: {:?}, buffer: {}/{} }}", |
| 58 | + self.inner, self.cap - self.pos, self.buf.len()) |
| 59 | + } |
| 60 | +} |
| 61 | + |
54 | 62 | impl<R: Reader> BufferedReader<R> { |
55 | 63 | /// Creates a new `BufferedReader` with the specified buffer capacity |
56 | 64 | pub fn with_capacity(cap: uint, inner: R) -> BufferedReader<R> { |
@@ -148,6 +156,13 @@ pub struct BufferedWriter<W> { |
148 | 156 | pos: uint |
149 | 157 | } |
150 | 158 |
|
| 159 | +impl<W> fmt::Show for BufferedWriter<W> where W: fmt::Show { |
| 160 | + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { |
| 161 | + write!(fmt, "BufferedWriter {{ writer: {:?}, buffer: {}/{} }}", |
| 162 | + self.inner.as_ref().unwrap(), self.pos, self.buf.len()) |
| 163 | + } |
| 164 | +} |
| 165 | + |
151 | 166 | impl<W: Writer> BufferedWriter<W> { |
152 | 167 | /// Creates a new `BufferedWriter` with the specified buffer capacity |
153 | 168 | pub fn with_capacity(cap: uint, inner: W) -> BufferedWriter<W> { |
@@ -235,6 +250,13 @@ pub struct LineBufferedWriter<W> { |
235 | 250 | inner: BufferedWriter<W>, |
236 | 251 | } |
237 | 252 |
|
| 253 | +impl<W> fmt::Show for LineBufferedWriter<W> where W: fmt::Show { |
| 254 | + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { |
| 255 | + write!(fmt, "LineBufferedWriter {{ writer: {:?}, buffer: {}/{} }}", |
| 256 | + self.inner.inner, self.inner.pos, self.inner.buf.len()) |
| 257 | + } |
| 258 | +} |
| 259 | + |
238 | 260 | impl<W: Writer> LineBufferedWriter<W> { |
239 | 261 | /// Creates a new `LineBufferedWriter` |
240 | 262 | pub fn new(inner: W) -> LineBufferedWriter<W> { |
@@ -318,6 +340,17 @@ pub struct BufferedStream<S> { |
318 | 340 | inner: BufferedReader<InternalBufferedWriter<S>> |
319 | 341 | } |
320 | 342 |
|
| 343 | +impl<S> fmt::Show for BufferedStream<S> where S: fmt::Show { |
| 344 | + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { |
| 345 | + let reader = &self.inner; |
| 346 | + let writer = &self.inner.inner.0; |
| 347 | + write!(fmt, "BufferedStream {{ stream: {:?}, write_buffer: {}/{}, read_buffer: {}/{} }}", |
| 348 | + writer.inner, |
| 349 | + writer.pos, writer.buf.len(), |
| 350 | + reader.cap - reader.pos, reader.buf.len()) |
| 351 | + } |
| 352 | +} |
| 353 | + |
321 | 354 | impl<S: Stream> BufferedStream<S> { |
322 | 355 | /// Creates a new buffered stream with explicitly listed capacities for the |
323 | 356 | /// reader/writer buffer. |
|
0 commit comments