[][src]Struct broom::Handle

pub struct Handle<T> { /* fields omitted */ }

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 or Rooted 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 or Rooted 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]

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]

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

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

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.