Skip to content

Commit 7cd7396

Browse files
committed
---
yaml --- r: 183507 b: refs/heads/beta c: 3c18bc4 h: refs/heads/master i: 183505: ca8eeda 183503: 40ed6ff v: v3
1 parent 01f569c commit 7cd7396

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ refs/heads/automation-fail: 1bf06495443584539b958873e04cc2f864ab10e4
3131
refs/heads/issue-18208-method-dispatch-3-quick-reject: 2009f85b9f99dedcec4404418eda9ddba90258a2
3232
refs/heads/batch: b7fd822592a4fb577552d93010c4a4e14f314346
3333
refs/heads/building: 126db549b038c84269a1e4fe46f051b2c15d6970
34-
refs/heads/beta: dc930b1a52730cc21d22185820a5cafed5801ecf
34+
refs/heads/beta: 3c18bc42722c137656caeea2cc6dd1047501f098
3535
refs/heads/windistfix: 7608dbad651f02e837ed05eef3d74a6662a6e928
3636
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
3737
refs/heads/tmp: eb836bf767aa1d8d4cba488a9091cde3c0ab4b2f

branches/beta/src/libcollections/ring_buf.rs

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1302,7 +1302,10 @@ impl<T> RingBuf<T> {
13021302
/// Panics if `at > len`
13031303
///
13041304
/// # Examples
1305-
/// ```rust
1305+
///
1306+
/// ```
1307+
/// use std::collections::RingBuf;
1308+
///
13061309
/// let mut buf: RingBuf<_> = vec![1,2,3].into_iter().collect();
13071310
/// let buf2 = buf.split_off(1);
13081311
/// // buf = [1], buf2 = [2, 3]
@@ -1353,6 +1356,31 @@ impl<T> RingBuf<T> {
13531356

13541357
other
13551358
}
1359+
1360+
/// Moves all the elements of `other` into `Self`, leaving `other` empty.
1361+
///
1362+
/// # Panics
1363+
///
1364+
/// Panics if the new number of elements in self overflows a `usize`.
1365+
///
1366+
/// # Examples
1367+
///
1368+
/// ```
1369+
/// use std::collections::RingBuf;
1370+
///
1371+
/// let mut buf: RingBuf<_> = vec![1, 2, 3].into_iter().collect();
1372+
/// let mut buf2: RingBuf<_> = vec![4, 5, 6].into_iter().collect();
1373+
/// buf.append(&mut buf2);
1374+
/// assert_eq!(buf.len(), 6);
1375+
/// assert_eq!(buf2.len(), 0);
1376+
/// ```
1377+
#[inline]
1378+
#[unstable(feature = "collections",
1379+
reason = "new API, waiting for dust to settle")]
1380+
pub fn append(&mut self, other: &mut Self) {
1381+
// naive impl
1382+
self.extend(other.drain());
1383+
}
13561384
}
13571385

13581386
impl<T: Clone> RingBuf<T> {
@@ -2813,4 +2841,25 @@ mod tests {
28132841
}
28142842
}
28152843
}
2844+
2845+
#[test]
2846+
fn test_append() {
2847+
let mut a: RingBuf<_> = vec![1, 2, 3].into_iter().collect();
2848+
let mut b: RingBuf<_> = vec![4, 5, 6].into_iter().collect();
2849+
2850+
// normal append
2851+
a.append(&mut b);
2852+
assert_eq!(a.iter().cloned().collect(), vec![1, 2, 3, 4, 5, 6]);
2853+
assert_eq!(b.iter().cloned().collect(), vec![]);
2854+
2855+
// append nothing to something
2856+
a.append(&mut b);
2857+
assert_eq!(a.iter().cloned().collect(), vec![1, 2, 3, 4, 5, 6]);
2858+
assert_eq!(b.iter().cloned().collect(), vec![]);
2859+
2860+
// append something to nothing
2861+
b.append(&mut a);
2862+
assert_eq!(b.iter().cloned().collect(), vec![1, 2, 3, 4, 5, 6]);
2863+
assert_eq!(a.iter().cloned().collect(), vec![]);
2864+
}
28162865
}

0 commit comments

Comments
 (0)