Struct std::collections::linked_list::CursorMut [−][src]
pub struct CursorMut<'a, T> where
T: 'a, { /* fields omitted */ }
Expand description
带有编辑操作的 LinkedList
上的游标。
Cursor
类似于迭代器,不同之处在于它可以自由地来回查找,并且可以在迭代过程中安全地修改列表。
这是因为其产生的引用的生命周期与自身的生命周期相关,而不仅仅是基础列表。
这意味着游标不能一次产生多个元素。
游标始终位于列表中的两个元素之间,并以逻辑循环的方式进行索引。
为了适应这一点,有一个 “ghost” 非元素在列表的开头和结尾之间产生 None
。
Implementations
返回 LinkedList
中的游标位置索引。
如果游标当前指向 “ghost” 非元素,则返回 None
。
将游标移动到 LinkedList
的下一个元素。
如果游标指向 “ghost” 非元素,那么它将移动到 LinkedList
的第一个元素。
如果它指向 LinkedList
的最后一个元素,那么它将把它移到 “ghost” 非元素。
将游标移动到 LinkedList
的上一个元素。
如果游标指向 “ghost” 非元素,那么它将移动到 LinkedList
的最后一个元素。
如果它指向 LinkedList
的第一个元素,那么它将把它移到 “ghost” 非元素。
返回对游标当前指向的元素的引用。
如果游标当前指向 “ghost” 非元素,则返回 None
。
返回下一个元素的引用。
如果游标指向 “ghost” 非元素,则返回 LinkedList
的第一个元素。
如果它指向 LinkedList
的最后一个元素,则返回 None
。
返回上一个元素的引用。
如果游标指向 “ghost” 非元素,则返回 LinkedList
的最后一个元素。
如果它指向 LinkedList
的第一个元素,则返回 None
。
在当前元素之后将新元素插入 LinkedList
。
如果游标指向 “ghost” 非元素,则将新元素插入 LinkedList
的前面。
在当前元素之前在 LinkedList
中插入一个新元素。
如果游标指向 “ghost” 非元素,则将新元素插入 LinkedList
的末尾。
从 LinkedList
中删除当前元素。
返回已删除的元素,并移动游标以指向 LinkedList
中的下一个元素。
如果游标当前指向 “ghost” 非元素,则不删除任何元素,并返回 None
。
在不释放列表节点的情况下从 LinkedList
中删除当前元素。
被删除的节点作为仅包含该节点的新 LinkedList
返回。
游标将移至当前 LinkedList
中的下一个元素。
如果游标当前指向 “ghost” 非元素,则不删除任何元素,并返回 None
。
将给定 LinkedList
中的元素插入当前元素之后。
如果游标指向 “ghost” 非元素,则新元素将插入 LinkedList
的开头。
将给定 LinkedList
中的元素插入到当前元素之前。
如果游标指向 “ghost” 非元素,则新元素将插入 LinkedList
的末尾。
在当前元素之后将列表分为两部分。 这将返回一个新列表,其中包含游标之后的所有内容,而原始列表将保留之前的所有内容。
如果游标指向 “ghost” 非元素,那么将移动 LinkedList
的全部内容。
在当前元素之前将列表分为两部分。 这将返回一个新列表,该列表包含游标之前的所有内容,而原始列表保留之后的所有内容。
如果游标指向 “ghost” 非元素,那么将移动 LinkedList
的全部内容。
将一个元素附加到游标的父列表的前面。 游标指向的节点不变,即使是 “ghost” 节点。
此操作应在 O(1) 时间内计算。
将一个元素附加到游标父列表的后面。 游标指向的节点不变,即使是 “ghost” 节点。
此操作应在 O(1) 时间内计算。
从游标的父列表中删除第一个元素并返回它,如果列表为空,则返回 None。 游标指向的元素保持不变,除非它指向前面的元素。 在这种情况下,它指向新的前端元素。
此操作应在 O(1) 时间内计算。
从游标的父列表中删除最后一个元素并返回它,如果列表为空,则返回 None。 游标指向的元素保持不变,除非它指向后面的元素。 在这种情况下,它指向 “ghost” 元素。
此操作应在 O(1) 时间内计算。
提供对游标父列表前元素的引用,如果列表为空,则为 None。
提供对游标父元素的前端列表的引用引用,如果列表为空,则为 None。
提供对游标父列表的后部元素的引用,如果列表为空,则为 None。
提供一个循环引用来返回游标的父列表的元素,如果列表为空,则提供 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