Struct alloc::collections::linked_list::CursorMut[][src]

pub struct CursorMut<'a, T: 'a> { /* fields omitted */ }
🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)
Expand description

带有编辑操作的 LinkedList 上的游标。

Cursor 类似于迭代器,不同之处在于它可以自由地来回查找,并且可以在迭代过程中安全地修改列表。 这是因为其产生的引用的生命周期与自身的生命周期相关,而不仅仅是基础列表。 这意味着游标不能一次产生多个元素。

游标始终位于列表中的两个元素之间,并以逻辑循环的方式进行索引。 为了适应这一点,有一个 “ghost” 非元素在列表的开头和结尾之间产生 None

Implementations

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

返回 LinkedList 中的游标位置索引。

如果游标当前指向 “ghost” 非元素,则返回 None

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

将游标移动到 LinkedList 的下一个元素。

如果游标指向 “ghost” 非元素,那么它将移动到 LinkedList 的第一个元素。 如果它指向 LinkedList 的最后一个元素,那么它将把它移到 “ghost” 非元素。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

将游标移动到 LinkedList 的上一个元素。

如果游标指向 “ghost” 非元素,那么它将移动到 LinkedList 的最后一个元素。 如果它指向 LinkedList 的第一个元素,那么它将把它移到 “ghost” 非元素。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

返回对游标当前指向的元素的引用。

如果游标当前指向 “ghost” 非元素,则返回 None

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

返回下一个元素的引用。

如果游标指向 “ghost” 非元素,则返回 LinkedList 的第一个元素。 如果它指向 LinkedList 的最后一个元素,则返回 None

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

返回上一个元素的引用。

如果游标指向 “ghost” 非元素,则返回 LinkedList 的最后一个元素。 如果它指向 LinkedList 的第一个元素,则返回 None

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

返回指向当前元素的只读游标。

返回的 Cursor 的生命周期与 CursorMut 的生命周期绑定在一起,这意味着它不能超过 CursorMut 的生命周期,并且 CursorMut 被冻结为 Cursor 的生命周期。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

在当前元素之后将新元素插入 LinkedList

如果游标指向 “ghost” 非元素,则将新元素插入 LinkedList 的前面。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

在当前元素之前在 LinkedList 中插入一个新元素。

如果游标指向 “ghost” 非元素,则将新元素插入 LinkedList 的末尾。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

LinkedList 中删除当前元素。

返回已删除的元素,并移动游标以指向 LinkedList 中的下一个元素。

如果游标当前指向 “ghost” 非元素,则不删除任何元素,并返回 None

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

在不释放列表节点的情况下从 LinkedList 中删除当前元素。

被删除的节点作为仅包含该节点的新 LinkedList 返回。 游标将移至当前 LinkedList 中的下一个元素。

如果游标当前指向 “ghost” 非元素,则不删除任何元素,并返回 None

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

将给定 LinkedList 中的元素插入当前元素之后。

如果游标指向 “ghost” 非元素,则新元素将插入 LinkedList 的开头。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

将给定 LinkedList 中的元素插入到当前元素之前。

如果游标指向 “ghost” 非元素,则新元素将插入 LinkedList 的末尾。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

在当前元素之后将列表分为两部分。 这将返回一个新列表,其中包含游标之后的所有内容,而原始列表将保留之前的所有内容。

如果游标指向 “ghost” 非元素,那么将移动 LinkedList 的全部内容。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

在当前元素之前将列表分为两部分。 这将返回一个新列表,该列表包含游标之前的所有内容,而原始列表保留之后的所有内容。

如果游标指向 “ghost” 非元素,那么将移动 LinkedList 的全部内容。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

将一个元素附加到游标的父列表的前面。 游标指向的节点不变,即使是 “ghost” 节点。

此操作应在 O(1) 时间内计算。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

将一个元素附加到游标父列表的后面。 游标指向的节点不变,即使是 “ghost” 节点。

此操作应在 O(1) 时间内计算。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

从游标的父列表中删除第一个元素并返回它,如果列表为空,则返回 None。 游标指向的元素保持不变,除非它指向前面的元素。 在这种情况下,它指向新的前端元素。

此操作应在 O(1) 时间内计算。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

从游标的父列表中删除最后一个元素并返回它,如果列表为空,则返回 None。 游标指向的元素保持不变,除非它指向后面的元素。 在这种情况下,它指向 “ghost” 元素。

此操作应在 O(1) 时间内计算。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

提供对游标父列表前元素的引用,如果列表为空,则为 None。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

提供对游标父元素的前端列表的引用引用,如果列表为空,则为 None。

🔬 This is a nightly-only experimental API. (linked_list_cursors #58533)

提供对游标父列表的后部元素的引用,如果列表为空,则为 None。

🔬 This is a nightly-only experimental API. (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

Trait Implementations

使用给定的格式化程序格式化该值。 Read more

Auto Trait Implementations

Blanket Implementations

获取 selfTypeIdRead more

从拥有的值中一成不变地借用。 Read more

从拥有的值中借用。 Read more

执行转换。

执行转换。

发生转换错误时返回的类型。

执行转换。

发生转换错误时返回的类型。

执行转换。