Skip to main content

Shared

Struct Shared 

Source
pub struct Shared<T> { /* private fields */ }
Expand description

§Safety

Shared<T> is a manually managed, stack-based shared smart pointer. It allows you to take multiple shared references, or a single unique one, but it does not perform any runtime checks — soundness relies on you upholding aliasing rules.

Implementations§

Source§

impl<T> Shared<T>

Source

pub fn new(value: T) -> Self

Creates a new shared container for a value.

Source

pub fn take_ref(&mut self) -> SharedRef<'_, T>

Takes a temporary shared reference to the value.

§Safety

This is only safe if the returned reference does not outlive self. The borrow checker enforces this, so in safe Rust usage, this method is sound.

Source

pub fn raw(&self) -> &UnsafeShared<T>

Internal helper if you ever need to extract the raw shared handle.

Trait Implementations§

Source§

impl<T: Clone> Clone for Shared<T>

Source§

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

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<T: Copy> Copy for Shared<T>

Auto Trait Implementations§

§

impl<T> Freeze for Shared<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for Shared<T>
where T: RefUnwindSafe,

§

impl<T> Send for Shared<T>
where T: Send,

§

impl<T> Sync for Shared<T>
where T: Sync,

§

impl<T> Unpin for Shared<T>
where T: Unpin,

§

impl<T> UnsafeUnpin for Shared<T>
where T: UnsafeUnpin,

§

impl<T> UnwindSafe for Shared<T>
where T: UnwindSafe,

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<T> Same for T

Source§

type Output = T

Should always be Self
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.