diff options
| author | bors <bors@rust-lang.org> | 2014-06-05 05:11:54 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-06-05 05:11:54 -0700 |
| commit | a7ac6a4eb707fd90dfbc2b2f84c7fed7faec5d90 (patch) | |
| tree | 124ed6f71aa183120b2ac303d715e213dbb10c83 /src | |
| parent | f2821f2c29a4b8cb8b8a4995213e74c799a80fc6 (diff) | |
| parent | 8e4e3abb1d0a3008d46fd56bba03dc20a81e9481 (diff) | |
| download | rust-a7ac6a4eb707fd90dfbc2b2f84c7fed7faec5d90.tar.gz rust-a7ac6a4eb707fd90dfbc2b2f84c7fed7faec5d90.zip | |
auto merge of #14642 : aochagavia/rust/pr, r=alexcrichton
The contents of a `RingBuf` are shown in the same way as the contents of a `Vector`. See the tests for examples.
Diffstat (limited to 'src')
| -rw-r--r-- | src/libcollections/ringbuf.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/libcollections/ringbuf.rs b/src/libcollections/ringbuf.rs index 0ca4177b7aa..7b8d416c4fe 100644 --- a/src/libcollections/ringbuf.rs +++ b/src/libcollections/ringbuf.rs @@ -14,6 +14,8 @@ //! collections::deque::Deque`. use std::cmp; +use std::fmt; +use std::fmt::Show; use std::iter::RandomAccessIterator; use deque::Deque; @@ -391,6 +393,19 @@ impl<A> Extendable<A> for RingBuf<A> { } } +impl<T: Show> Show for RingBuf<T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + try!(write!(f, "[")); + + for (i, e) in self.iter().enumerate() { + if i != 0 { try!(write!(f, ", ")); } + try!(write!(f, "{}", *e)); + } + + write!(f, "]") + } +} + #[cfg(test)] mod tests { extern crate test; @@ -819,4 +834,15 @@ mod tests { e.clear(); assert!(e == RingBuf::new()); } + + #[test] + fn test_show() { + let ringbuf: RingBuf<int> = range(0, 10).collect(); + assert!(format!("{}", ringbuf).as_slice() == "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]"); + + let ringbuf: RingBuf<&str> = vec!["just", "one", "test", "more"].iter() + .map(|&s| s) + .collect(); + assert!(format!("{}", ringbuf).as_slice() == "[just, one, test, more]"); + } } |
