|
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