[−][src]Struct broom::Handle
A handle to a heap object.
Handle
may be cheaply copied as is necessary to serve your needs. It's even legal for it
to outlive the object it refers to, provided it is no longer used to access it afterwards.
Methods
impl<T> Handle<T>
[src]
pub unsafe fn get_unchecked(&self) -> &T
[src]
Get a reference to the object this handle refers to without checking any invariants.
You almost certainly do not want to use this function: consider Heap::get
or
Heap::get_unchecked
instead; both are safer than this function.
The following invariants must be upheld by you, the responsible programmer:
- The object must still be alive (i.e: accessible from the heap it was created on)
- The object must not be mutably accessible elsewhere (i.e: has any live references to
it) by any other part of the program. Immutable references are permitted. Other handles
(i.e:
Handle
orRooted
are also permitted, provided they are not in use. - That a garbage collection of the heap this object belongs to does not occur while the reference this function creates is live.
If any of these invariants are not upheld, undefined behaviour will result when using this function. If all are upheld, this function provides zero-cost access to underlying object.
pub unsafe fn get_mut_unchecked(&self) -> &mut T
[src]
Get a mutable reference to the object this handle refers to without checking any invariants.
You almost certainly do not want to use this function: consider [Heap::mutate
] or
[Heap::mutate_unchecked
] instead; both are safer than this function.
The following invariants must be upheld by you, the responsible programmer:
- The object must still be alive (i.e: accessible from the heap it was created on)
- The object must not be accessible elsewhere (i.e: has any live references to it),
either mutably or immutably, by any other part of the program. Other handles (i.e:
Handle
orRooted
are permitted, provided they are not in use. - That a garbage collection of the heap this object belongs to does not occur while the reference this function creates is live.
If any of these invariants are not upheld, undefined behaviour will result when using this function. If all are upheld, this function provides zero-cost access to underlying object.
Trait Implementations
impl<T> AsRef<Handle<T>> for Handle<T>
[src]
impl<T> AsRef<Handle<T>> for Rooted<T>
[src]
impl<T> Clone for Handle<T>
[src]
fn clone(&self) -> Self
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<T> Copy for Handle<T>
[src]
impl<T: Debug> Debug for Handle<T>
[src]
impl<T> Eq for Handle<T>
[src]
impl<T> From<Rooted<T>> for Handle<T>
[src]
impl<T> Hash for Handle<T>
[src]
fn hash<H: Hasher>(&self, state: &mut H)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl<T> PartialEq<Handle<T>> for Handle<T>
[src]
impl<O: Trace<O>> Trace<O> for Handle<O>
[src]
Auto Trait Implementations
impl<T> RefUnwindSafe for Handle<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> !Send for Handle<T>
impl<T> !Sync for Handle<T>
impl<T> Unpin for Handle<T>
impl<T> UnwindSafe for Handle<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
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>,