Lines Matching defs:RBTreeNode

27 /// use kernel::{alloc::flags, rbtree::{RBTree, RBTreeNode, RBTreeNodeReservation}};
101 /// use kernel::{alloc::flags, rbtree::{RBTree, RBTreeNode}, sync::SpinLock};
105 /// let node = RBTreeNode::new(10, 100, flags::GFP_KERNEL)?;
321 ) -> Result<Option<RBTreeNode<K, V>>> {
322 Ok(self.insert(RBTreeNode::new(key, value, flags)?))
331 pub fn insert(&mut self, node: RBTreeNode<K, V>) -> Option<RBTreeNode<K, V>> {
441 pub fn remove_node(&mut self, key: &K) -> Option<RBTreeNode<K, V>> {
918 pub fn remove_current(self) -> (Option<Self>, RBTreeNode<K, V>) {
926 let node = RBTreeNode { node };
942 pub fn remove_prev(&mut self) -> Option<RBTreeNode<K, V>> {
947 pub fn remove_next(&mut self) -> Option<RBTreeNode<K, V>> {
951 fn remove_neighbor(&mut self, direction: Direction) -> Option<RBTreeNode<K, V>> {
962 return Some(RBTreeNode { node });
1213 /// It then becomes an [`RBTreeNode`] that can be inserted into a tree.
1214 pub fn into_node(self, key: K, value: V) -> RBTreeNode<K, V> {
1223 RBTreeNode { node }
1231 pub struct RBTreeNode<K, V> {
1235 impl<K, V> RBTreeNode<K, V> {
1238 pub fn new(key: K, value: V, flags: Flags) -> Result<RBTreeNode<K, V>> {
1250 // SAFETY: If K and V can be sent across threads, then it's also okay to send [`RBTreeNode`] across
1252 unsafe impl<K: Send, V: Send> Send for RBTreeNode<K, V> {}
1255 // [`RBTreeNode`] without synchronization.
1256 unsafe impl<K: Sync, V: Sync> Sync for RBTreeNode<K, V> {}
1258 impl<K, V> RBTreeNode<K, V> {
1318 fn insert(self, node: RBTreeNode<K, V>) -> &'a mut V {
1383 pub fn remove_node(self) -> RBTreeNode<K, V> {
1389 RBTreeNode {
1407 fn replace(self, node: RBTreeNode<K, V>) -> RBTreeNode<K, V> {
1425 RBTreeNode { node: old_node }