pub struct CNodeSlots<O = Box<Cap>> { /* private fields */ }Expand description
Direct runtime slot map backing a CNode: Key -> CapHashOrRef<O>.
Stored as a sorted vector, not a BTreeMap: CNodes are usually tiny in the
hot guest path, and avoiding per-entry tree-node allocations matters. The
API is map-shaped and preserves strictly-ascending keys.
Implementations§
Source§impl<O> CNodeSlots<O>
impl<O> CNodeSlots<O>
pub fn new() -> Self
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
pub fn get(&self, key: &Key) -> Option<&MissingOr<CapHashOrRef<O>>>
pub fn insert( &mut self, key: Key, value: MissingOr<CapHashOrRef<O>>, ) -> Option<MissingOr<CapHashOrRef<O>>>
pub fn remove(&mut self, key: &Key) -> Option<MissingOr<CapHashOrRef<O>>>
pub fn iter(&self) -> impl Iterator<Item = (&Key, &MissingOr<CapHashOrRef<O>>)>
pub fn iter_mut( &mut self, ) -> impl Iterator<Item = (&Key, &mut MissingOr<CapHashOrRef<O>>)>
Trait Implementations§
Source§impl<O> Archive for CNodeSlots<O>
impl<O> Archive for CNodeSlots<O>
Source§type Archived = ArchivedCNodeSlots<O>
type Archived = ArchivedCNodeSlots<O>
The archived representation of this type. Read more
Source§type Resolver = CNodeSlotsResolver<O>
type Resolver = CNodeSlotsResolver<O>
The resolver for this type. It must contain all the additional
information from serializing needed to make the archived type from
the normal type.
Source§fn resolve(&self, resolver: Self::Resolver, out: Place<Self::Archived>)
fn resolve(&self, resolver: Self::Resolver, out: Place<Self::Archived>)
Creates the archived version of this value at the given position and
writes it to the given output. Read more
§const COPY_OPTIMIZATION: CopyOptimization<Self> = _
const COPY_OPTIMIZATION: CopyOptimization<Self> = _
An optimization flag that allows the bytes of this type to be copied
directly to a writer instead of calling
serialize. Read moreSource§impl<O: Clone> Clone for CNodeSlots<O>
impl<O: Clone> Clone for CNodeSlots<O>
Source§impl<O: Debug> Debug for CNodeSlots<O>
impl<O: Debug> Debug for CNodeSlots<O>
Source§impl<O> Default for CNodeSlots<O>
impl<O> Default for CNodeSlots<O>
Source§impl<__D: Fallible + ?Sized, O> Deserialize<CNodeSlots<O>, __D> for Archived<CNodeSlots<O>>where
Vec<(Key, MissingOr<CapHashOrRef<O>>)>: Archive,
<Vec<(Key, MissingOr<CapHashOrRef<O>>)> as Archive>::Archived: Deserialize<Vec<(Key, MissingOr<CapHashOrRef<O>>)>, __D>,
impl<__D: Fallible + ?Sized, O> Deserialize<CNodeSlots<O>, __D> for Archived<CNodeSlots<O>>where
Vec<(Key, MissingOr<CapHashOrRef<O>>)>: Archive,
<Vec<(Key, MissingOr<CapHashOrRef<O>>)> as Archive>::Archived: Deserialize<Vec<(Key, MissingOr<CapHashOrRef<O>>)>, __D>,
Source§fn deserialize(
&self,
deserializer: &mut __D,
) -> Result<CNodeSlots<O>, <__D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut __D, ) -> Result<CNodeSlots<O>, <__D as Fallible>::Error>
Deserializes using the given deserializer
Source§impl<__S: Fallible + ?Sized, O> Serialize<__S> for CNodeSlots<O>
impl<__S: Fallible + ?Sized, O> Serialize<__S> for CNodeSlots<O>
Auto Trait Implementations§
impl<O> Freeze for CNodeSlots<O>
impl<O> RefUnwindSafe for CNodeSlots<O>where
O: RefUnwindSafe,
impl<O> Send for CNodeSlots<O>where
O: Send,
impl<O> Sync for CNodeSlots<O>where
O: Sync,
impl<O> Unpin for CNodeSlots<O>where
O: Unpin,
impl<O> UnsafeUnpin for CNodeSlots<O>
impl<O> UnwindSafe for CNodeSlots<O>where
O: UnwindSafe,
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
§type Archived = <T as Archive>::Archived
type Archived = <T as Archive>::Archived
The archived counterpart of this type. Unlike
Archive, it may be
unsized. Read more§fn archived_metadata(
&self,
) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
fn archived_metadata( &self, ) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
Creates the archived version of the metadata for this value.
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
§impl<T> Pointee for T
impl<T> Pointee for T
§impl<T, S> SerializeUnsized<S> for Twhere
T: Serialize<S>,
S: Fallible + Writer + ?Sized,
impl<T, S> SerializeUnsized<S> for Twhere
T: Serialize<S>,
S: Fallible + Writer + ?Sized,
§fn serialize_unsized(
&self,
serializer: &mut S,
) -> Result<usize, <S as Fallible>::Error>
fn serialize_unsized( &self, serializer: &mut S, ) -> Result<usize, <S as Fallible>::Error>
Writes the object and returns the position of the archived type.