Struct std::collections::btree_map::CursorMut
source · pub struct CursorMut<'a, K, V, A = Global>where
K: 'a,
V: 'a,{ /* private fields */ }
btree_cursors
#107540)Expand description
BTreeMap
上的游标具有编辑操作。
Cursor
就像一个迭代器,除了它可以自由地来回 seek,并且可以在迭代期间安全地改变树。
这是因为它产生的引用的生命周期与它自己的生命周期相关联,而不仅仅是底层树。
这意味着游标不能一次产生多个元素。
游标总是指向树中的一个元素,并以逻辑循环的方式进行索引。
为了适应这一点,有一个 “ghost” 非元素在树的最后一个元素和第一个元素之间产生 None
。
Cursor
是使用 BTreeMap::lower_bound_mut
和 BTreeMap::upper_bound_mut
方法创建的。
Implementations§
source§impl<'a, K, V, A> CursorMut<'a, K, V, A>
impl<'a, K, V, A> CursorMut<'a, K, V, A>
sourcepub fn move_next(&mut self)
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub fn move_next(&mut self)
btree_cursors
#107540)将游标移动到 BTreeMap
的下一个元素。
如果游标指向 “ghost” 非元素,那么这会将其移动到 BTreeMap
的第一个元素。
如果它指向 BTreeMap
的最后一个元素,那么这会将它移动到 “ghost” 非元素。
sourcepub fn move_prev(&mut self)
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub fn move_prev(&mut self)
btree_cursors
#107540)将游标移动到 BTreeMap
的前一个元素。
如果游标指向 “ghost” 非元素,那么这会将其移动到 BTreeMap
的最后一个元素。
如果它指向 BTreeMap
的第一个元素,那么这会将它移动到 “ghost” 非元素。
sourcepub fn key(&self) -> Option<&K>
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub fn key(&self) -> Option<&K>
btree_cursors
#107540)将引用返回到游标当前指向的元素的键。
如果游标当前指向 “ghost” 非元素,则返回 None
。
sourcepub fn value(&self) -> Option<&V>
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub fn value(&self) -> Option<&V>
btree_cursors
#107540)将引用返回到游标当前指向的元素的值。
如果游标当前指向 “ghost” 非元素,则返回 None
。
sourcepub fn key_value(&self) -> Option<(&K, &V)>
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub fn key_value(&self) -> Option<(&K, &V)>
btree_cursors
#107540)将引用返回到游标当前指向的元素的键和值。
如果游标当前指向 “ghost” 非元素,则返回 None
。
sourcepub fn value_mut(&mut self) -> Option<&mut V>
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub fn value_mut(&mut self) -> Option<&mut V>
btree_cursors
#107540)将可变引用返回到游标当前指向的元素的值。
如果游标当前指向 “ghost” 非元素,则返回 None
。
sourcepub fn key_value_mut(&mut self) -> Option<(&K, &mut V)>
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub fn key_value_mut(&mut self) -> Option<(&K, &mut V)>
btree_cursors
#107540)返回对键的引用和对游标当前指向的元素的值的可变引用。
如果游标当前指向 “ghost” 非元素,则返回 None
。
sourcepub unsafe fn key_mut_unchecked(&mut self) -> Option<&mut K>
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub unsafe fn key_mut_unchecked(&mut self) -> Option<&mut K>
btree_cursors
#107540)返回对光标当前指向的元素的键的可变引用。
如果游标当前指向 “ghost” 非元素,则返回 None
。
Safety
这可用于修改密钥,但您必须确保维护 BTreeMap
不,变体。
Specifically:
- 密钥在树中必须保持唯一。
- 键必须保持相对于树中其他元素的排序顺序。
sourcepub fn peek_next(&mut self) -> Option<(&K, &mut V)>
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub fn peek_next(&mut self) -> Option<(&K, &mut V)>
btree_cursors
#107540)返回一个引用到下一个元素的键和值。
如果游标指向 “ghost” 非元素,则返回 BTreeMap
的第一个元素。
如果它指向 BTreeMap
的最后一个元素,则返回 None
。
source§impl<'a, K, V, A> CursorMut<'a, K, V, A>where
K: Ord,
A: Allocator + Clone,
impl<'a, K, V, A> CursorMut<'a, K, V, A>where K: Ord, A: Allocator + Clone,
sourcepub unsafe fn insert_after_unchecked(&mut self, key: K, value: V)
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub unsafe fn insert_after_unchecked(&mut self, key: K, value: V)
btree_cursors
#107540)在当前元素之后将一个新元素插入到 BTreeMap
中。
如果游标指向 “ghost” 非元素,则新元素将插入到 BTreeMap
的前面。
Safety
您必须确保维护 BTreeMap
不,变体。
Specifically:
- 新插入的元素的键在树中必须是唯一的。
- 树中的所有键必须保持排序顺序。
sourcepub unsafe fn insert_before_unchecked(&mut self, key: K, value: V)
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub unsafe fn insert_before_unchecked(&mut self, key: K, value: V)
btree_cursors
#107540)在当前元素之前将一个新元素插入到 BTreeMap
中。
如果游标指向 “ghost” 非元素,则新元素将插入到 BTreeMap
的末尾。
Safety
您必须确保维护 BTreeMap
不,变体。
Specifically:
- 新插入的元素的键在树中必须是唯一的。
- 树中的所有键必须保持排序顺序。
sourcepub fn insert_after(&mut self, key: K, value: V)
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub fn insert_after(&mut self, key: K, value: V)
btree_cursors
#107540)在当前元素之后将一个新元素插入到 BTreeMap
中。
如果游标指向 “ghost” 非元素,则新元素将插入到 BTreeMap
的前面。
Panics
如果满足以下条件,则此函数 panics:
- 给定键比较小于或等于当前元素 (如果有)。
- 给定的键比较大于或等于下一个元素 (如果有)。
sourcepub fn insert_before(&mut self, key: K, value: V)
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub fn insert_before(&mut self, key: K, value: V)
btree_cursors
#107540)在当前元素之前将一个新元素插入到 BTreeMap
中。
如果游标指向 “ghost” 非元素,则新元素将插入到 BTreeMap
的末尾。
Panics
如果满足以下条件,则此函数 panics:
- 给定键比较大于或等于当前元素 (如果有)。
- 给定的键比较小于或等于前一个元素 (如果有)。
sourcepub fn remove_current(&mut self) -> Option<(K, V)>
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub fn remove_current(&mut self) -> Option<(K, V)>
btree_cursors
#107540)从 BTreeMap
中移除当前元素。
被移除的元素被返回,游标移动到 BTreeMap
中的下一个元素。
如果游标当前指向 “ghost” 非元素,则不删除任何元素,并返回 None
。
在这种情况下,游标不会移动。
sourcepub fn remove_current_and_move_back(&mut self) -> Option<(K, V)>
🔬This is a nightly-only experimental API. (btree_cursors
#107540)
pub fn remove_current_and_move_back(&mut self) -> Option<(K, V)>
btree_cursors
#107540)从 BTreeMap
中移除当前元素。
被移除的元素被返回,游标移动到 BTreeMap
中的前一个元素。
如果游标当前指向 “ghost” 非元素,则不删除任何元素,并返回 None
。
在这种情况下,游标不会移动。