mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-11 14:33:32 +00:00
Rollup merge of #22247 - Gankro:dlist_split, r=alexcrichton
This commit is contained in:
commit
b1a46db649
@ -560,7 +560,12 @@ impl<T> DList<T> {
|
|||||||
/// Splits the list into two at the given index. Returns everything after the given index,
|
/// Splits the list into two at the given index. Returns everything after the given index,
|
||||||
/// including the index.
|
/// including the index.
|
||||||
///
|
///
|
||||||
|
/// # Panics
|
||||||
|
///
|
||||||
|
/// Panics if `at > len`.
|
||||||
|
///
|
||||||
/// This operation should compute in O(n) time.
|
/// This operation should compute in O(n) time.
|
||||||
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
@ -580,9 +585,11 @@ impl<T> DList<T> {
|
|||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub fn split_off(&mut self, at: usize) -> DList<T> {
|
pub fn split_off(&mut self, at: usize) -> DList<T> {
|
||||||
let len = self.len();
|
let len = self.len();
|
||||||
assert!(at < len, "Cannot split off at a nonexistent index");
|
assert!(at <= len, "Cannot split off at a nonexistent index");
|
||||||
if at == 0 {
|
if at == 0 {
|
||||||
return mem::replace(self, DList::new());
|
return mem::replace(self, DList::new());
|
||||||
|
} else if at == len {
|
||||||
|
return DList::new();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Below, we iterate towards the `i-1`th node, either from the start or the end,
|
// Below, we iterate towards the `i-1`th node, either from the start or the end,
|
||||||
@ -1116,6 +1123,18 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// no-op on the last index
|
||||||
|
{
|
||||||
|
let mut m = DList::new();
|
||||||
|
m.push_back(1);
|
||||||
|
|
||||||
|
let p = m.split_off(1);
|
||||||
|
assert_eq!(m.len(), 1);
|
||||||
|
assert_eq!(p.len(), 0);
|
||||||
|
assert_eq!(m.back(), Some(&1));
|
||||||
|
assert_eq!(m.front(), Some(&1));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
Loading…
Reference in New Issue
Block a user