Struct std::ptr::UniqueUnstable [-] [+] [src]

pub struct Unique<T> where T: ?Sized {
    // some fields omitted
}

A wrapper around a raw *mut T that indicates that the possessor of this wrapper owns the referent. This in turn implies that the Unique<T> is Send/Sync if T is Send/Sync, unlike a raw *mut T (which conveys no particular ownership semantics). It also implies that the referent of the pointer should not be modified without a unique path to the Unique reference. Useful for building abstractions like Vec<T> or Box<T>, which internally use raw pointers to manage the memory that they own.

Methods

impl<T> Unique<T> where T: ?Sized

unsafe fn new(ptr: *mut T) -> Unique<T>

Create a new Unique.

unsafe fn get(&self) -> &T

Dereference the content.

unsafe fn get_mut(&mut self) -> &mut T

Mutably dereference the content.

Trait Implementations

impl<T> Send for Unique<T> where T: Send, T: ?Sized

Unique pointers are Send if T is Send because the data they reference is unaliased. Note that this aliasing invariant is unenforced by the type system; the abstraction using the Unique must enforce it.

impl<T> Sync for Unique<T> where T: Sync, T: ?Sized

Unique pointers are Sync if T is Sync because the data they reference is unaliased. Note that this aliasing invariant is unenforced by the type system; the abstraction using the Unique must enforce it.

impl<T> Deref for Unique<T> where T: ?Sized

type Target = *mut T

fn deref(&'a self) -> &'a *mut T