pub struct RefCell<T: ?Sized> {
    pub(crate) borrows: RefCell<BorrowData>,
    pub(crate) inner: RefCell<T>,
}
Expand description

A RefCell that tracks outstanding borrows and reports stack traces for dynamic borrow failures.

Fields§

§borrows: RefCell<BorrowData>§inner: RefCell<T>

Implementations§

source§

impl<T> RefCell<T>

source

pub fn new(value: T) -> RefCell<T>

Create a new RefCell value.

source

pub fn into_inner(self) -> T

Discard this RefCell and return the value stored inside of it.

source§

impl<T: ?Sized> RefCell<T>

source

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

Borrow the value stored in this cell immutably. Panics if any outstanding mutable borrows of the same cell exist.

source

pub fn try_borrow(&self) -> Result<Ref<'_, T>, BorrowError>

source

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

Borrow the value stored in this cell mutably. Panics if there are any other outstanding borrows of this cell (mutable borrows are unique, i.e. there can only be one).

source

pub fn try_borrow_mut(&self) -> Result<RefMut<'_, T>, BorrowMutError>

source

pub fn as_ptr(&self) -> *mut T

source

pub unsafe fn try_borrow_unguarded(&self) -> Result<&T, BorrowError>

source§

impl<T> RefCell<T>

source

pub fn replace(&self, t: T) -> T

Corresponds to https://doc.rust-lang.org/std/cell/struct.RefCell.html#method.replace.

source

pub fn replace_with<F: FnOnce(&mut T) -> T>(&self, f: F) -> T

Corresponds to https://doc.rust-lang.org/std/cell/struct.RefCell.html#method.replace_with.

source§

impl<T: Default> RefCell<T>

source

pub fn take(&self) -> T

Corresponds to https://doc.rust-lang.org/std/cell/struct.RefCell.html#method.take.

Trait Implementations§

source§

impl<T: Clone> Clone for RefCell<T>

source§

fn clone(&self) -> RefCell<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 RefCell<T>

source§

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

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

impl<T: Default> Default for RefCell<T>

source§

fn default() -> RefCell<T>

Returns the “default value” for a type. Read more
source§

impl<T: ?Sized + PartialEq> PartialEq<RefCell<T>> for RefCell<T>

source§

fn eq(&self, other: &RefCell<T>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for RefCell<T>

§

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

§

impl<T> !Sync for RefCell<T>

§

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

§

impl<T: ?Sized> UnwindSafe for RefCell<T>where T: UnwindSafe,

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.