[−][src]Struct ffi_support::handle_map::HandleMap
HandleMap
is a collection type which can hold any type of value, and
offers a stable handle which can be used to retrieve it on insertion. These
handles offer methods for converting to and
from 64 bit integers, meaning they're very easy to pass
over the FFI (they also implement [IntoFfi
] for the same purpose).
See the module level docs for more information.
Note: In FFI code, most usage of HandleMap
will be done through the
[ConcurrentHandleMap
] type, which is a thin wrapper around a
RwLock<HandleMap<Mutex<T>>>
.
Fields
id: u16
first_free: u16
num_entries: usize
entries: Vec<Entry<T>>
Implementations
impl<T> HandleMap<T>
[src]
pub fn new() -> Self
[src]
Create a new HandleMap
with the default capacity.
pub fn new_with_capacity(request: usize) -> Self
[src]
Allocate a new HandleMap
. Note that the actual capacity may be larger
than the requested value.
Panics if request
is greater than handle_map::MAX_CAPACITY
pub fn len(&self) -> usize
[src]
Get the number of entries in the HandleMap
.
pub fn is_empty(&self) -> bool
[src]
Returns true if the HandleMap is empty.
pub fn capacity(&self) -> usize
[src]
Returns the number of slots allocated in the handle map.
fn ensure_capacity(&mut self, cap_at_least: usize)
[src]
fn debug_check_valid(&self)
[src]
fn assert_valid(&self)
[src]
pub fn insert(&mut self, v: T) -> Handle
[src]
Insert an item into the map, and return a handle to it.
fn check_handle(&self, h: Handle) -> Result<usize, HandleError>
[src]
pub fn delete(&mut self, h: Handle) -> Result<(), HandleError>
[src]
Delete an item from the HandleMap.
pub fn remove(&mut self, h: Handle) -> Result<T, HandleError>
[src]
Remove an item from the HandleMap, returning the old value.
pub fn get(&self, h: Handle) -> Result<&T, HandleError>
[src]
Get a reference to the item referenced by the handle, or return a
[HandleError
] describing the problem.
pub fn get_mut(&mut self, h: Handle) -> Result<&mut T, HandleError>
[src]
Get a mut reference to the item referenced by the handle, or return a
[HandleError
] describing the problem.
Trait Implementations
impl<T: Clone> Clone for HandleMap<T>
[src]
impl<T: Debug> Debug for HandleMap<T>
[src]
impl<T> Default for HandleMap<T>
[src]
impl<T> Index<Handle> for HandleMap<T>
[src]
Auto Trait Implementations
impl<T> RefUnwindSafe for HandleMap<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Send for HandleMap<T> where
T: Send,
T: Send,
impl<T> Sync for HandleMap<T> where
T: Sync,
T: Sync,
impl<T> Unpin for HandleMap<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for HandleMap<T> where
T: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,