pub struct UnsafeRef<T: ?Sized> { /* private fields */ }
Expand description

Unchecked shared pointer

This type acts like a Rc or Arc except that no reference count is maintained. Instead, the user is responsible for freeing the managed object once it is no longer in use.

You must guarantee that an object managed by an UnsafeRef is not moved, dropped or accessed through a mutable reference as long as at least one UnsafeRef is pointing to it.

Implementations§

source§

impl<T: ?Sized> UnsafeRef<T>

source

pub unsafe fn from_raw(val: *const T) -> UnsafeRef<T>

Creates an UnsafeRef from a raw pointer

Safety

You must ensure that the UnsafeRef guarantees are upheld.

source

pub fn into_raw(ptr: Self) -> *mut T

Converts an UnsafeRef into a raw pointer

source§

impl<T: ?Sized> UnsafeRef<T>

source

pub fn from_box(val: Box<T>) -> UnsafeRef<T>

Creates an UnsafeRef from a Box

source

pub unsafe fn into_box(ptr: Self) -> Box<T>

Converts an UnsafeRef into a Box

Safety

You must ensure that this is the only UnsafeRef managing this object and that it is not currently a member of any intrusive collections. This operation is only valid if the UnsafeRef was created using UnsafeRef::from_box.

Trait Implementations§

source§

impl<T: ?Sized> AsRef<T> for UnsafeRef<T>

source§

fn as_ref(&self) -> &T

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<T: ?Sized> Borrow<T> for UnsafeRef<T>

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T: ?Sized> Clone for UnsafeRef<T>

source§

fn clone(&self) -> UnsafeRef<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug + ?Sized> Debug for UnsafeRef<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: ?Sized> Deref for UnsafeRef<T>

§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &T

Dereferences the value.
source§

impl<T: ?Sized + Send> Send for UnsafeRef<T>

source§

impl<T: ?Sized + Sync> Sync for UnsafeRef<T>

Auto Trait Implementations§

§

impl<T: ?Sized> RefUnwindSafe for UnsafeRef<T>where T: RefUnwindSafe,

§

impl<T: ?Sized> Unpin for UnsafeRef<T>

§

impl<T: ?Sized> UnwindSafe for UnsafeRef<T>where T: RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.