naive RingBuf::append impl
This commit is contained in:
parent
dc930b1a52
commit
3c18bc4272
@ -1302,7 +1302,10 @@ impl<T> RingBuf<T> {
|
||||
/// Panics if `at > len`
|
||||
///
|
||||
/// # Examples
|
||||
/// ```rust
|
||||
///
|
||||
/// ```
|
||||
/// use std::collections::RingBuf;
|
||||
///
|
||||
/// let mut buf: RingBuf<_> = vec![1,2,3].into_iter().collect();
|
||||
/// let buf2 = buf.split_off(1);
|
||||
/// // buf = [1], buf2 = [2, 3]
|
||||
@ -1353,6 +1356,31 @@ impl<T> RingBuf<T> {
|
||||
|
||||
other
|
||||
}
|
||||
|
||||
/// Moves all the elements of `other` into `Self`, leaving `other` empty.
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics if the new number of elements in self overflows a `usize`.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// use std::collections::RingBuf;
|
||||
///
|
||||
/// let mut buf: RingBuf<_> = vec![1, 2, 3].into_iter().collect();
|
||||
/// let mut buf2: RingBuf<_> = vec![4, 5, 6].into_iter().collect();
|
||||
/// buf.append(&mut buf2);
|
||||
/// assert_eq!(buf.len(), 6);
|
||||
/// assert_eq!(buf2.len(), 0);
|
||||
/// ```
|
||||
#[inline]
|
||||
#[unstable(feature = "collections",
|
||||
reason = "new API, waiting for dust to settle")]
|
||||
pub fn append(&mut self, other: &mut Self) {
|
||||
// naive impl
|
||||
self.extend(other.drain());
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Clone> RingBuf<T> {
|
||||
@ -2813,4 +2841,25 @@ mod tests {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_append() {
|
||||
let mut a: RingBuf<_> = vec![1, 2, 3].into_iter().collect();
|
||||
let mut b: RingBuf<_> = vec![4, 5, 6].into_iter().collect();
|
||||
|
||||
// normal append
|
||||
a.append(&mut b);
|
||||
assert_eq!(a.iter().cloned().collect(), vec![1, 2, 3, 4, 5, 6]);
|
||||
assert_eq!(b.iter().cloned().collect(), vec![]);
|
||||
|
||||
// append nothing to something
|
||||
a.append(&mut b);
|
||||
assert_eq!(a.iter().cloned().collect(), vec![1, 2, 3, 4, 5, 6]);
|
||||
assert_eq!(b.iter().cloned().collect(), vec![]);
|
||||
|
||||
// append something to nothing
|
||||
b.append(&mut a);
|
||||
assert_eq!(b.iter().cloned().collect(), vec![1, 2, 3, 4, 5, 6]);
|
||||
assert_eq!(a.iter().cloned().collect(), vec![]);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user