Struct std::collections::linked_list::LinkedList 1.0.0[−][src]
pub struct LinkedList<T> { /* fields omitted */ }
Expand description
Implementations
将所有元素从 other
移动到列表的末尾。
这将重用 other
中的所有节点并将它们移到 self
中。
完成此操作后,other
变为空。
此操作应在 O(1) 时间和 O(1) 内存中进行计算。
Examples
use std::collections::LinkedList;
let mut list1 = LinkedList::new();
list1.push_back('a');
let mut list2 = LinkedList::new();
list2.push_back('b');
list2.push_back('c');
list1.append(&mut list2);
let mut iter = list1.iter();
assert_eq!(iter.next(), Some(&'a'));
assert_eq!(iter.next(), Some(&'b'));
assert_eq!(iter.next(), Some(&'c'));
assert!(iter.next().is_none());
assert!(list2.is_empty());
Run提供一个正向迭代器。
Examples
use std::collections::LinkedList;
let mut list: LinkedList<u32> = LinkedList::new();
list.push_back(0);
list.push_back(1);
list.push_back(2);
let mut iter = list.iter();
assert_eq!(iter.next(), Some(&0));
assert_eq!(iter.next(), Some(&1));
assert_eq!(iter.next(), Some(&2));
assert_eq!(iter.next(), None);
Run提供具有可变引用的正向迭代器。
Examples
use std::collections::LinkedList;
let mut list: LinkedList<u32> = LinkedList::new();
list.push_back(0);
list.push_back(1);
list.push_back(2);
for element in list.iter_mut() {
*element += 10;
}
let mut iter = list.iter();
assert_eq!(iter.next(), Some(&10));
assert_eq!(iter.next(), Some(&11));
assert_eq!(iter.next(), Some(&12));
assert_eq!(iter.next(), None);
Run在前元素处提供游标。
如果列表为空,则游标指向 “ghost” 非元素。
在前面的元素上为游标提供编辑操作。
如果列表为空,则游标指向 “ghost” 非元素。
在 back 元素上提供游标。
如果列表为空,则游标指向 “ghost” 非元素。
在 back 元素上为游标提供编辑操作。
如果列表为空,则游标指向 “ghost” 非元素。
在给定的索引处将列表分为两部分。 返回给定索引之后的所有内容,包括索引。
此运算应在 O(n) 时间中计算。
Panics
如果为 at > len
,就会出现 panics。
Examples
use std::collections::LinkedList;
let mut d = LinkedList::new();
d.push_front(1);
d.push_front(2);
d.push_front(3);
let mut split = d.split_off(2);
assert_eq!(split.pop_front(), Some(1));
assert_eq!(split.pop_front(), None);
Run删除给定索引处的元素并返回它。
此运算应在 O(n) 时间中计算。
Panics
如果 >= len 就会出现 panics
Examples
#![feature(linked_list_remove)]
use std::collections::LinkedList;
let mut d = LinkedList::new();
d.push_front(1);
d.push_front(2);
d.push_front(3);
assert_eq!(d.remove(1), 2);
assert_eq!(d.remove(0), 3);
assert_eq!(d.remove(0), 1);
Runpub fn drain_filter<F>(&mut self, filter: F) -> DrainFilter<'_, T, F>ⓘNotable traits for DrainFilter<'_, T, F>impl<'_, T, F> Iterator for DrainFilter<'_, T, F> where
F: FnMut(&mut T) -> bool, type Item = T;
where
F: FnMut(&mut T) -> bool,
pub fn drain_filter<F>(&mut self, filter: F) -> DrainFilter<'_, T, F>ⓘNotable traits for DrainFilter<'_, T, F>impl<'_, T, F> Iterator for DrainFilter<'_, T, F> where
F: FnMut(&mut T) -> bool, type Item = T;
where
F: FnMut(&mut T) -> bool,
Notable traits for DrainFilter<'_, T, F>
impl<'_, T, F> Iterator for DrainFilter<'_, T, F> where
F: FnMut(&mut T) -> bool, type Item = T;
创建一个迭代器,该迭代器使用闭包确定是否应删除元素。
如果闭包返回 true,则删除并生成元素。 如果闭包返回 false,则该元素将保留在列表中,并且不会由迭代器产生。
请注意,无论选择保留还是删除 drain_filter
,您都可以对过滤器闭包中的每个元素进行可变的。
Examples
将列表分成偶数和几率,重新使用原始列表:
#![feature(drain_filter)]
use std::collections::LinkedList;
let mut numbers: LinkedList<u32> = LinkedList::new();
numbers.extend(&[1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15]);
let evens = numbers.drain_filter(|x| *x % 2 == 0).collect::<LinkedList<_>>();
let odds = numbers;
assert_eq!(evens.into_iter().collect::<Vec<_>>(), vec![2, 4, 6, 8, 14]);
assert_eq!(odds.into_iter().collect::<Vec<_>>(), vec![1, 3, 5, 9, 11, 13, 15]);
RunTrait Implementations
创建一个空的 LinkedList<T>
。
从迭代器创建一个值。 Read more
此方法测试 self
和 other
值是否相等,并由 ==
使用。 Read more
此方法测试 !=
。
如果存在,则此方法返回 self
和 other
值之间的顺序。 Read more