Skip to content

Commit

Permalink
Add examples for RingBuf methods get, get_mut, iter, mut_iter
Browse files Browse the repository at this point in the history
  • Loading branch information
nham committed Jul 26, 2014
1 parent d30776e commit ebe8097
Showing 1 changed file with 66 additions and 0 deletions.
66 changes: 66 additions & 0 deletions src/libcollections/ringbuf.rs
Expand Up @@ -133,6 +133,18 @@ impl<T> RingBuf<T> {
/// Retrieve an element in the RingBuf by index
///
/// Fails if there is no element with the given index
///
/// # Example
///
/// ```rust
/// use std::collections::RingBuf;
///
/// let mut buf = RingBuf::new();
/// buf.push(3i);
/// buf.push(4);
/// buf.push(5);
/// assert_eq!(buf.get(1), &4);
/// ```
pub fn get<'a>(&'a self, i: uint) -> &'a T {
let idx = self.raw_index(i);
match *self.elts.get(idx) {
Expand All @@ -144,6 +156,19 @@ impl<T> RingBuf<T> {
/// Retrieve an element in the RingBuf by index
///
/// Fails if there is no element with the given index
///
/// # Example
///
/// ```rust
/// use std::collections::RingBuf;
///
/// let mut buf = RingBuf::new();
/// buf.push(3i);
/// buf.push(4);
/// buf.push(5);
/// *buf.get_mut(1) = 7;
/// assert_eq!(buf.get(1), &7);
/// ```
pub fn get_mut<'a>(&'a mut self, i: uint) -> &'a mut T {
let idx = self.raw_index(i);
match *self.elts.get_mut(idx) {
Expand All @@ -157,6 +182,20 @@ impl<T> RingBuf<T> {
/// `i` and `j` may be equal.
///
/// Fails if there is no element with the given index
///
/// # Example
///
/// ```rust
/// use std::collections::RingBuf;
///
/// let mut buf = RingBuf::new();
/// buf.push(3i);
/// buf.push(4);
/// buf.push(5);
/// buf.swap(0, 2);
/// assert_eq!(buf.get(0), &5);
/// assert_eq!(buf.get(2), &3);
/// ```
pub fn swap(&mut self, i: uint, j: uint) {
assert!(i < self.len());
assert!(j < self.len());
Expand Down Expand Up @@ -196,11 +235,38 @@ impl<T> RingBuf<T> {
}

/// Front-to-back iterator.
///
/// # Example
///
/// ```rust
/// use std::collections::RingBuf;
///
/// let mut buf = RingBuf::new();
/// buf.push(5i);
/// buf.push(3);
/// buf.push(4);
/// assert_eq!(buf.iter().collect::<Vec<&int>>().as_slice(), &[&5, &3, &4]);
/// ```
pub fn iter<'a>(&'a self) -> Items<'a, T> {
Items{index: 0, rindex: self.nelts, lo: self.lo, elts: self.elts.as_slice()}
}

/// Front-to-back iterator which returns mutable values.
///
/// # Example
///
/// ```rust
/// use std::collections::RingBuf;
///
/// let mut buf = RingBuf::new();
/// buf.push(5i);
/// buf.push(3);
/// buf.push(4);
/// for num in buf.mut_iter() {
/// *num = *num - 2;
/// }
/// assert_eq!(buf.mut_iter().collect::<Vec<&mut int>>().as_slice(), &[&mut 3, &mut 1, &mut 2]);
/// ```
pub fn mut_iter<'a>(&'a mut self) -> MutItems<'a, T> {
let start_index = raw_index(self.lo, self.elts.len(), 0);
let end_index = raw_index(self.lo, self.elts.len(), self.nelts);
Expand Down

5 comments on commit ebe8097

@bors
Copy link
Contributor

@bors bors commented on ebe8097 Jul 26, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

saw approval from alexcrichton
at nham@ebe8097

@bors
Copy link
Contributor

@bors bors commented on ebe8097 Jul 26, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merging nham/rust/ringbuf_docs = ebe8097 into auto

@bors
Copy link
Contributor

@bors bors commented on ebe8097 Jul 26, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nham/rust/ringbuf_docs = ebe8097 merged ok, testing candidate = ecce58c

@bors
Copy link
Contributor

@bors bors commented on ebe8097 Jul 26, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fast-forwarding master to auto = ecce58c

Please sign in to comment.