pub struct CursorMut<'a, K, V, A = Global>where
    K: 'a,
    V: 'a,{ /* private fields */ }
🔬This is a nightly-only experimental API. (btree_cursors #107540)
Expand description

BTreeMap 上的游标具有编辑操作。

Cursor 就像一个迭代器,除了它可以自由地来回 seek,并且可以在迭代期间安全地改变树。 这是因为它产生的引用的生命周期与它自己的生命周期相关联,而不仅仅是底层树。 这意味着游标不能一次产生多个元素。

游标总是指向树中的一个元素,并以逻辑循环的方式进行索引。 为了适应这一点,有一个 “ghost” 非元素在树的最后一个元素和第一个元素之间产生 None

Cursor 是使用 BTreeMap::lower_bound_mutBTreeMap::upper_bound_mut 方法创建的。

Implementations§

source§

impl<'a, K, V, A> CursorMut<'a, K, V, A>

source

pub fn move_next(&mut self)

🔬This is a nightly-only experimental API. (btree_cursors #107540)

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

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

source

pub fn move_prev(&mut self)

🔬This is a nightly-only experimental API. (btree_cursors #107540)

将游标移动到 BTreeMap 的前一个元素。

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

source

pub fn key(&self) -> Option<&K>

🔬This is a nightly-only experimental API. (btree_cursors #107540)

将引用返回到游标当前指向的元素的键。

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

source

pub fn value(&self) -> Option<&V>

🔬This is a nightly-only experimental API. (btree_cursors #107540)

将引用返回到游标当前指向的元素的值。

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

source

pub fn key_value(&self) -> Option<(&K, &V)>

🔬This is a nightly-only experimental API. (btree_cursors #107540)

将引用返回到游标当前指向的元素的键和值。

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

source

pub fn value_mut(&mut self) -> Option<&mut V>

🔬This is a nightly-only experimental API. (btree_cursors #107540)

将可变引用返回到游标当前指向的元素的值。

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

source

pub fn key_value_mut(&mut self) -> Option<(&K, &mut V)>

🔬This is a nightly-only experimental API. (btree_cursors #107540)

返回对键的引用和对游标当前指向的元素的值的可变引用。

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

source

pub unsafe fn key_mut_unchecked(&mut self) -> Option<&mut K>

🔬This is a nightly-only experimental API. (btree_cursors #107540)

返回对光标当前指向的元素的键的可变引用。

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

Safety

这可用于修改密钥,但您必须确保维护 BTreeMap 不,变体。 Specifically:

  • 密钥在树中必须保持唯一。
  • 键必须保持相对于树中其他元素的排序顺序。
source

pub fn peek_next(&mut self) -> Option<(&K, &mut V)>

🔬This is a nightly-only experimental API. (btree_cursors #107540)

返回一个引用到下一个元素的键和值。

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

source

pub fn peek_prev(&mut self) -> Option<(&K, &mut V)>

🔬This is a nightly-only experimental API. (btree_cursors #107540)

返回一个引用到前一个元素的键和值。

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

source

pub fn as_cursor(&self) -> Cursor<'_, K, V>

🔬This is a nightly-only experimental API. (btree_cursors #107540)

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

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

source§

impl<'a, K, V, A> CursorMut<'a, K, V, A>where K: Ord, A: Allocator + Clone,

source

pub unsafe fn insert_after_unchecked(&mut self, key: K, value: V)

🔬This is a nightly-only experimental API. (btree_cursors #107540)

在当前元素之后将一个新元素插入到 BTreeMap 中。

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

Safety

您必须确保维护 BTreeMap 不,变体。 Specifically:

  • 新插入的元素的键在树中必须是唯一的。
  • 树中的所有键必须保持排序顺序。
source

pub unsafe fn insert_before_unchecked(&mut self, key: K, value: V)

🔬This is a nightly-only experimental API. (btree_cursors #107540)

在当前元素之前将一个新元素插入到 BTreeMap 中。

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

Safety

您必须确保维护 BTreeMap 不,变体。 Specifically:

  • 新插入的元素的键在树中必须是唯一的。
  • 树中的所有键必须保持排序顺序。
source

pub fn insert_after(&mut self, key: K, value: V)

🔬This is a nightly-only experimental API. (btree_cursors #107540)

在当前元素之后将一个新元素插入到 BTreeMap 中。

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

Panics

如果满足以下条件,则此函数 panics:

  • 给定键比较小于或等于当前元素 (如果有)。
  • 给定的键比较大于或等于下一个元素 (如果有)。
source

pub fn insert_before(&mut self, key: K, value: V)

🔬This is a nightly-only experimental API. (btree_cursors #107540)

在当前元素之前将一个新元素插入到 BTreeMap 中。

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

Panics

如果满足以下条件,则此函数 panics:

  • 给定键比较大于或等于当前元素 (如果有)。
  • 给定的键比较小于或等于前一个元素 (如果有)。
source

pub fn remove_current(&mut self) -> Option<(K, V)>

🔬This is a nightly-only experimental API. (btree_cursors #107540)

BTreeMap 中移除当前元素。

被移除的元素被返回,游标移动到 BTreeMap 中的下一个元素。

如果游标当前指向 “ghost” 非元素,则不删除任何元素,并返回 None。 在这种情况下,游标不会移动。

source

pub fn remove_current_and_move_back(&mut self) -> Option<(K, V)>

🔬This is a nightly-only experimental API. (btree_cursors #107540)

BTreeMap 中移除当前元素。

被移除的元素被返回,游标移动到 BTreeMap 中的前一个元素。

如果游标当前指向 “ghost” 非元素,则不删除任何元素,并返回 None。 在这种情况下,游标不会移动。

Trait Implementations§

source§

impl<K, V, A> Debug for CursorMut<'_, K, V, A>where K: Debug, V: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

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

Auto Trait Implementations§

§

impl<'a, K, V, A> RefUnwindSafe for CursorMut<'a, K, V, A>where A: RefUnwindSafe, K: RefUnwindSafe, V: RefUnwindSafe,

§

impl<'a, K, V, A> Send for CursorMut<'a, K, V, A>where A: Send, K: Send, V: Send,

§

impl<'a, K, V, A> Sync for CursorMut<'a, K, V, A>where A: Sync, K: Sync, V: Sync,

§

impl<'a, K, V, A> Unpin for CursorMut<'a, K, V, A>

§

impl<'a, K, V, A = Global> !UnwindSafe for CursorMut<'a, K, V, A>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

获取 selfTypeIdRead more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

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

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

从拥有的值中借用。 Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

返回未更改的参数。

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

调用 U::from(self)

也就是说,这种转换是 From<T> for U 实现选择执行的任何操作。

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

执行转换。
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

执行转换。