Struct blart::OpaqueNodePtr
source · #[repr(transparent)]pub struct OpaqueNodePtr<K, V>(TaggedPointer<OpaqueValue, 3>, PhantomData<(K, V)>);
Expand description
Tuple Fields§
§0: TaggedPointer<OpaqueValue, 3>
§1: PhantomData<(K, V)>
Implementations§
source§impl<K, V> OpaqueNodePtr<K, V>
impl<K, V> OpaqueNodePtr<K, V>
sourcepub fn new<N>(pointer: NonNull<N>) -> Selfwhere
N: Node<Value = V>,
pub fn new<N>(pointer: NonNull<N>) -> Selfwhere N: Node<Value = V>,
Construct a new opaque node pointer from an existing non-null node pointer.
sourcepub fn is<N: Node>(&self) -> bool
pub fn is<N: Node>(&self) -> bool
Return true
if this Node_ pointer points to the specified concrete
NodeType
.
sourcepub fn cast<N: Node>(self) -> Option<NodePtr<N>>
pub fn cast<N: Node>(self) -> Option<NodePtr<N>>
Create a non-opaque node pointer that will eliminate future type assertions, if the type of the pointed node matches the given node type.
sourcepub fn to_node_ptr(self) -> ConcreteNodePtr<K, V>
pub fn to_node_ptr(self) -> ConcreteNodePtr<K, V>
Cast this opaque pointer type an enum that contains a pointer to the concrete node type.
sourcepub(crate) unsafe fn header_mut<'h>(self) -> Option<&'h mut Header>
pub(crate) unsafe fn header_mut<'h>(self) -> Option<&'h mut Header>
Get a mutable reference to the header if the underlying node has a
header field, otherwise return None
.
Safety
- You must enforce Rust’s aliasing rules, since the returned lifetime ’h is arbitrarily chosen and does not necessarily reflect the actual lifetime of the data. In particular, for the duration of this lifetime, the memory the pointer points to must not get accessed (read or written) through any other pointer.
Trait Implementations§
source§impl<K, V> Clone for OpaqueNodePtr<K, V>
impl<K, V> Clone for OpaqueNodePtr<K, V>
source§impl<K, V> Debug for OpaqueNodePtr<K, V>
impl<K, V> Debug for OpaqueNodePtr<K, V>
source§impl<K, V> Hash for OpaqueNodePtr<K, V>
impl<K, V> Hash for OpaqueNodePtr<K, V>
source§impl<K, V> PartialEq<OpaqueNodePtr<K, V>> for OpaqueNodePtr<K, V>
impl<K, V> PartialEq<OpaqueNodePtr<K, V>> for OpaqueNodePtr<K, V>
source§impl<K, V> Pointer for OpaqueNodePtr<K, V>
impl<K, V> Pointer for OpaqueNodePtr<K, V>
source§impl<K, T> Visitable<K, T> for OpaqueNodePtr<K, T>
impl<K, T> Visitable<K, T> for OpaqueNodePtr<K, T>
impl<K, V> Copy for OpaqueNodePtr<K, V>
impl<K, V> Eq for OpaqueNodePtr<K, V>
Auto Trait Implementations§
impl<K, V> RefUnwindSafe for OpaqueNodePtr<K, V>where K: RefUnwindSafe, V: RefUnwindSafe,
impl<K, V> !Send for OpaqueNodePtr<K, V>
impl<K, V> !Sync for OpaqueNodePtr<K, V>
impl<K, V> Unpin for OpaqueNodePtr<K, V>where K: Unpin, V: Unpin,
impl<K, V> UnwindSafe for OpaqueNodePtr<K, V>where K: UnwindSafe, V: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more