Struct alloc::collections::linked_list::CursorMut
source · pub struct CursorMut<'a, T: 'a, A: Allocator = Global> { /* private fields */ }
linked_list_cursors
#58533)Expand description
带有编辑操作的 LinkedList
上的游标。
Cursor
类似于迭代器,不同之处在于它可以自由地来回查找,并且可以在迭代过程中安全地修改列表。
这是因为其产生的引用的生命周期与其自身的生命周期相关联,而不仅仅是底层列表。
这意味着游标不能一次产生多个元素。
游标始终位于列表中的两个元素之间,并以逻辑循环的方式进行索引。
为了适应这一点,有一个 “ghost” 非元素在列表的开头和结尾之间产生 None
。
Implementations§
source§impl<'a, T, A: Allocator> CursorMut<'a, T, A>
impl<'a, T, A: Allocator> CursorMut<'a, T, A>
sourcepub fn index(&self) -> Option<usize>
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn index(&self) -> Option<usize>
linked_list_cursors
#58533)返回 LinkedList
中的游标位置索引。
如果游标当前指向 “ghost” 非元素,则返回 None
。
sourcepub fn move_next(&mut self)
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn move_next(&mut self)
linked_list_cursors
#58533)将游标移动到 LinkedList
的下一个元素。
如果游标指向 “ghost” 非元素,那么它将移动到 LinkedList
的第一个元素。
如果它指向 LinkedList
的最后一个元素,那么它将把它移到 “ghost” 非元素。
sourcepub fn move_prev(&mut self)
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn move_prev(&mut self)
linked_list_cursors
#58533)将游标移动到 LinkedList
的上一个元素。
如果游标指向 “ghost” 非元素,那么它将移动到 LinkedList
的最后一个元素。
如果它指向 LinkedList
的第一个元素,那么它将把它移到 “ghost” 非元素。
sourcepub fn current(&mut self) -> Option<&mut T>
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn current(&mut self) -> Option<&mut T>
linked_list_cursors
#58533)返回对游标当前指向的元素的引用。
如果游标当前指向 “ghost” 非元素,则返回 None
。
sourcepub fn peek_next(&mut self) -> Option<&mut T>
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn peek_next(&mut self) -> Option<&mut T>
linked_list_cursors
#58533)返回下一个元素的引用。
如果游标指向 “ghost” 非元素,则返回 LinkedList
的第一个元素。
如果它指向 LinkedList
的最后一个元素,则返回 None
。
source§impl<'a, T> CursorMut<'a, T>
impl<'a, T> CursorMut<'a, T>
sourcepub fn splice_after(&mut self, list: LinkedList<T>)
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn splice_after(&mut self, list: LinkedList<T>)
linked_list_cursors
#58533)将给定 LinkedList
中的元素插入当前元素之后。
如果游标指向 “ghost” 非元素,则新元素将插入 LinkedList
的开头。
sourcepub fn splice_before(&mut self, list: LinkedList<T>)
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn splice_before(&mut self, list: LinkedList<T>)
linked_list_cursors
#58533)将给定 LinkedList
中的元素插入到当前元素之前。
如果游标指向 “ghost” 非元素,则新元素将插入 LinkedList
的末尾。
source§impl<'a, T, A: Allocator> CursorMut<'a, T, A>
impl<'a, T, A: Allocator> CursorMut<'a, T, A>
sourcepub fn insert_after(&mut self, item: T)
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn insert_after(&mut self, item: T)
linked_list_cursors
#58533)在当前元素之后将新元素插入 LinkedList
。
如果游标指向 “ghost” 非元素,则将新元素插入 LinkedList
的前面。
sourcepub fn insert_before(&mut self, item: T)
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn insert_before(&mut self, item: T)
linked_list_cursors
#58533)在当前元素之前在 LinkedList
中插入一个新元素。
如果游标指向 “ghost” 非元素,则将新元素插入 LinkedList
的末尾。
sourcepub fn remove_current(&mut self) -> Option<T>
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn remove_current(&mut self) -> Option<T>
linked_list_cursors
#58533)从 LinkedList
中删除当前元素。
返回已删除的元素,并移动游标以指向 LinkedList
中的下一个元素。
如果游标当前指向 “ghost” 非元素,则不删除任何元素,并返回 None
。
sourcepub fn remove_current_as_list(&mut self) -> Option<LinkedList<T, A>>where
A: Clone,
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn remove_current_as_list(&mut self) -> Option<LinkedList<T, A>>where A: Clone,
linked_list_cursors
#58533)在不释放列表节点的情况下从 LinkedList
中删除当前元素。
被删除的节点作为仅包含该节点的新 LinkedList
返回。
游标将移至当前 LinkedList
中的下一个元素。
如果游标当前指向 “ghost” 非元素,则不删除任何元素,并返回 None
。
sourcepub fn split_after(&mut self) -> LinkedList<T, A>where
A: Clone,
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn split_after(&mut self) -> LinkedList<T, A>where A: Clone,
linked_list_cursors
#58533)在当前元素之后将列表分为两部分。 这将返回一个新列表,其中包含游标之后的所有内容,而原始列表将保留之前的所有内容。
如果游标指向 “ghost” 非元素,那么将移动 LinkedList
的全部内容。
sourcepub fn split_before(&mut self) -> LinkedList<T, A>where
A: Clone,
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn split_before(&mut self) -> LinkedList<T, A>where A: Clone,
linked_list_cursors
#58533)在当前元素之前将列表分为两部分。 这将返回一个新列表,该列表包含游标之前的所有内容,而原始列表保留之后的所有内容。
如果游标指向 “ghost” 非元素,那么将移动 LinkedList
的全部内容。
sourcepub fn push_front(&mut self, elt: T)
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn push_front(&mut self, elt: T)
linked_list_cursors
#58533)将一个元素追加到游标的父列表的前面。 游标指向的节点不变,即使是 “ghost” 节点。
此运算应在 O(1) 时间中进行计算。
sourcepub fn push_back(&mut self, elt: T)
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn push_back(&mut self, elt: T)
linked_list_cursors
#58533)将一个元素追加到游标父列表的后面。 游标指向的节点不变,即使是 “ghost” 节点。
此运算应在 O(1) 时间中进行计算。
sourcepub fn pop_front(&mut self) -> Option<T>
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn pop_front(&mut self) -> Option<T>
linked_list_cursors
#58533)从游标的父列表中删除第一个元素并返回它,如果列表为空,则返回 None。 游标指向的元素保持不变,除非它指向前面的元素。 在这种情况下,它指向新的前端元素。
此运算应在 O(1) 时间中进行计算。
sourcepub fn pop_back(&mut self) -> Option<T>
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn pop_back(&mut self) -> Option<T>
linked_list_cursors
#58533)从游标的父列表中删除最后一个元素并返回它,如果列表为空,则返回 None。 游标指向的元素保持不变,除非它指向后面的元素。 在这种情况下,它指向 “ghost” 元素。
此运算应在 O(1) 时间中进行计算。
sourcepub fn front(&self) -> Option<&T>
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn front(&self) -> Option<&T>
linked_list_cursors
#58533)提供对游标父列表前元素的引用,如果列表为空,则为 None。
sourcepub fn front_mut(&mut self) -> Option<&mut T>
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn front_mut(&mut self) -> Option<&mut T>
linked_list_cursors
#58533)提供对光标父列表的前元素的可变引用,如果列表为空,则为 None。
sourcepub fn back(&self) -> Option<&T>
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn back(&self) -> Option<&T>
linked_list_cursors
#58533)提供对游标父列表的后部元素的引用,如果列表为空,则为 None。
sourcepub fn back_mut(&mut self) -> Option<&mut T>
🔬This is a nightly-only experimental API. (linked_list_cursors
#58533)
pub fn back_mut(&mut self) -> Option<&mut T>
linked_list_cursors
#58533)提供一个循环引用来返回游标的父列表的元素,如果列表为空,则提供 None
。
Examples
使用游标构建和可变列表,然后获取返回元素:
#![feature(linked_list_cursors)]
use std::collections::LinkedList;
let mut dl = LinkedList::new();
dl.push_front(3);
dl.push_front(2);
dl.push_front(1);
let mut cursor = dl.cursor_front_mut();
*cursor.current().unwrap() = 99;
*cursor.back_mut().unwrap() = 0;
let mut contents = dl.into_iter();
assert_eq!(contents.next(), Some(99));
assert_eq!(contents.next(), Some(2));
assert_eq!(contents.next(), Some(0));
assert_eq!(contents.next(), None);
Run