Struct HeldSyncCell

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

A cell that holds a value until any changes made are applied by use of the update method. Getting the value or obtaining a reference to the value in this cell will return the value immediately following the last call to update. This allows for mutably altering a value while keeping a reference for a short amount of time to the old value. This is useful when you want a method in a structure to be able to modify the structure it is being called from such as when changing the scene in a game engine.

§Usage

use sync_cell::HeldSyncCell;

let cell = HeldSyncCell::new(0);

// Set the next value of the cell.
cell.set(1);

// Cell continues to hold a value of 0 until the `update` method is called.
assert_eq!(0, cell.get());

cell.update();
assert_eq!(1, cell.get());

Implementations§

Source§

impl<T> HeldSyncCell<T>

Source

pub const fn new(data: T) -> Self

Creates a new HeldSyncCell.

  • data - The initial value of the HeldSyncCell.
Source

pub fn set(&self, value: T)

Sets the value contained in this cell. This value will only become available once the update method is called.

In the case that multiple threads call this method simultaniously, the order in which the calls are processed is not defined. However, the final result will be the value specified by one of the method calls.

  • value - The new value of the cell.
§Panicking

This method will panic if any of the locks become poisoned.

Source

pub fn into_inner(self) -> T

Retrieves the inner value stored in this HeldSyncCell. This will return the most up-to-date value even if update has not been called.

§Panicking

This method will panic if any of the locks become poisoned.

Source

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

Borrows a immutable reference to the data stored in this cell. This is a reference to the current value of the cell.

§Panicking

This method will panic if any of the locks become poisoned.

Source

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

Borrows a mutable reference to the data stored in this cell. This is a reference to the current value of the cell not the incoming value. Any changes to the value will update the current value.

§Panicking

This method will panic if any of the locks become poisoned.

Source

pub fn has_update(&self) -> bool

Checks if a new nalue is available that can be applied by calling update.

§Panicking

This method will panic if any of the locks become poisoned.

Source

pub fn update(&self)

Updates the internal value of this cell. This involves replacing the current value with the incoming value if it is available.

§Panicking

This method will panic if any of the locks become poisoned.

Source§

impl<T: Clone> HeldSyncCell<T>

Source

pub fn get(&self) -> T

Gets the value contained in this cell.

§Panicking

This method will panic if any of the locks become poisoned.

Trait Implementations§

Source§

impl<T: Clone> Clone for HeldSyncCell<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: Default> Default for HeldSyncCell<T>

Source§

fn default() -> Self

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

impl<T> From<T> for HeldSyncCell<T>

Source§

fn from(value: T) -> Self

Converts to this type from the input type.
Source§

impl<T: Hash> Hash for HeldSyncCell<T>

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<T: Ord> Ord for HeldSyncCell<T>

Source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<T: PartialEq> PartialEq for HeldSyncCell<T>

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T: PartialOrd> PartialOrd for HeldSyncCell<T>

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<T: Eq> Eq for HeldSyncCell<T>

Auto Trait Implementations§

§

impl<T> !Freeze for HeldSyncCell<T>

§

impl<T> RefUnwindSafe for HeldSyncCell<T>

§

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

§

impl<T> Sync for HeldSyncCell<T>
where T: Send + Sync,

§

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

§

impl<T> UnwindSafe for HeldSyncCell<T>

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

Source§

fn from(t: !) -> T

Converts to this type from the input type.
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> 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.