rust: rbtree: simplify finding current in remove_current
The previous version used a verbose `match` to get `current`, which may be slightly confusing at first glance. This change makes it shorter and more clearly expresses the intent: prefer `next` if available, otherwise fall back to `prev`. Signed-off-by: Onur Özkan <work@onurozkan.dev> Reviewed-by: Alice Ryhl <aliceryhl@google.com> Reviewed-by: Alexandre Courbot <acourbot@nvidia.com> Link: https://lore.kernel.org/r/20250708075850.25789-1-work@onurozkan.dev Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
This commit is contained in:
@@ -775,23 +775,14 @@ impl<'a, K, V> Cursor<'a, K, V> {
|
||||
// the tree cannot change. By the tree invariant, all nodes are valid.
|
||||
unsafe { bindings::rb_erase(&mut (*this).links, addr_of_mut!(self.tree.root)) };
|
||||
|
||||
let current = match (prev, next) {
|
||||
(_, Some(next)) => next,
|
||||
(Some(prev), None) => prev,
|
||||
(None, None) => {
|
||||
return (None, node);
|
||||
}
|
||||
};
|
||||
// INVARIANT:
|
||||
// - `current` is a valid node in the [`RBTree`] pointed to by `self.tree`.
|
||||
let cursor = next.or(prev).map(|current| Self {
|
||||
current,
|
||||
tree: self.tree,
|
||||
});
|
||||
|
||||
(
|
||||
// INVARIANT:
|
||||
// - `current` is a valid node in the [`RBTree`] pointed to by `self.tree`.
|
||||
Some(Self {
|
||||
current,
|
||||
tree: self.tree,
|
||||
}),
|
||||
node,
|
||||
)
|
||||
(cursor, node)
|
||||
}
|
||||
|
||||
/// Remove the previous node, returning it if it exists.
|
||||
|
||||
Reference in New Issue
Block a user