Pointers_Study_With_Core_Concepts::refcell

Struct MyRefCell

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

§Required to wrap value T in UnsafeCell

Because you are never allowed to cast a shared ref to an exclusive ref in other way than by going through the unsafe cell.

§Wrapping our RefState in Cell

Will give us ability to mutate Enum’s reference count through a shared reference

§Info

RefCell will enforce borrow rules at runtime.

§Common Usage

A fairly safe way to dynamically borrow data e.g Node in a graph/tree.

Implementations§

Source§

impl<T> MyRefCell<T>

Source

pub fn new(value: T) -> Self

Source

pub fn borrow(&self) -> Option<Ref<'_, T>>

Source

pub fn borrow_mut(&self) -> Option<RefMut<'_, T>>

Auto Trait Implementations§

§

impl<T> !Freeze for MyRefCell<T>

§

impl<T> !RefUnwindSafe for MyRefCell<T>

§

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

§

impl<T> !Sync for MyRefCell<T>

§

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

§

impl<T> UnwindSafe for MyRefCell<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> 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, 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.