Skip to content

Commit 8e4e3ab

Browse files
committed
Implement Show for RingBuf
1 parent d130acc commit 8e4e3ab

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

src/libcollections/ringbuf.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
//! collections::deque::Deque`.
1515
1616
use std::cmp;
17+
use std::fmt;
18+
use std::fmt::Show;
1719
use std::iter::RandomAccessIterator;
1820

1921
use deque::Deque;
@@ -391,6 +393,19 @@ impl<A> Extendable<A> for RingBuf<A> {
391393
}
392394
}
393395

396+
impl<T: Show> Show for RingBuf<T> {
397+
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
398+
try!(write!(f, "["));
399+
400+
for (i, e) in self.iter().enumerate() {
401+
if i != 0 { try!(write!(f, ", ")); }
402+
try!(write!(f, "{}", *e));
403+
}
404+
405+
write!(f, "]")
406+
}
407+
}
408+
394409
#[cfg(test)]
395410
mod tests {
396411
extern crate test;
@@ -819,4 +834,15 @@ mod tests {
819834
e.clear();
820835
assert!(e == RingBuf::new());
821836
}
837+
838+
#[test]
839+
fn test_show() {
840+
let ringbuf: RingBuf<int> = range(0, 10).collect();
841+
assert!(format!("{}", ringbuf).as_slice() == "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]");
842+
843+
let ringbuf: RingBuf<&str> = vec!["just", "one", "test", "more"].iter()
844+
.map(|&s| s)
845+
.collect();
846+
assert!(format!("{}", ringbuf).as_slice() == "[just, one, test, more]");
847+
}
822848
}

0 commit comments

Comments
 (0)