My

Struct My 

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

A dynamic exclusively-owning smart pointer to a value

Implementations§

Source§

impl<T> My<T>

Source

pub fn new(data: T) -> My<T>

Construct a new exclusively-owning My pointer from a value

Source§

impl<T: ?Sized> My<T>

Source

pub fn borrow(&self) -> Dyb<T>

Dynamically borrow the value

This borrow may live for any lifetime less than that of the bounds on the value itself - notably, this implies that (as far as the borrow-checker is concerned) it may outlive the owner itself!

This actually shifts the responsibility for ensuring the value lives long enough back onto the owner (just like the static borrow checker) with the caveat that dropping the value early will fail at runtime.

Dybs satisfies this requirement by leaking the value and panicking in this case. The leaking ensures soundness as in the worst case the value will just live forever, while panicking ensures the error is reported at the appropriate time rather than unfairly blaming a Dyb for holding a borrow for “too long” or entirely ignoring the problem.

Trait Implementations§

Source§

impl<T: Clone> Clone for My<T>

Source§

fn clone(&self) -> Self

Returns a duplicate 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: ?Sized> Deref for My<T>

Source§

type Target = T

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<T: ?Sized> Drop for My<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<T> Freeze for My<T>
where T: ?Sized,

§

impl<T> RefUnwindSafe for My<T>
where T: RefUnwindSafe + ?Sized,

§

impl<T> !Send for My<T>

§

impl<T> !Sync for My<T>

§

impl<T> Unpin for My<T>
where T: ?Sized,

§

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

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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 T
where 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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

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 T
where U: Into<T>,

Source§

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 T
where U: TryFrom<T>,

Source§

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.