Struct raui_core::data_binding::DataBinding [−][src]
Expand description
Wraps internal data and optionally notifies an Application
of changes to it
See module docs for a full example.
Implementations
impl<T> DataBinding<T> where
T: Debug + Default + Send + Sync, [src]
impl<T> DataBinding<T> where
T: Debug + Default + Send + Sync, [src]pub fn new(data: T) -> Self[src]
pub fn new(data: T) -> Self[src]Create a new DataBinding that wraps data
It will create the data as unbound meaning that changes to the data will not notify any
Application. The DataBinding can afterwards be
bound with the bind method.
pub fn new_bound(data: T, notifier: ChangeNotifier) -> Self[src]
pub fn new_bound(data: T, notifier: ChangeNotifier) -> Self[src]Create a new DataBinding that wraps data and notifies an
Application’s ChangeNotifier when the data is
mutated.
pub fn bind(&mut self, notifier: ChangeNotifier)[src]
pub fn bind(&mut self, notifier: ChangeNotifier)[src]Bind this DataBinding to a ChangeNotifier
pub fn unbind(&mut self)[src]
pub fn unbind(&mut self)[src]Unbind this DataBinding so that changes to the data no longer trigger application
updates
pub fn access<F, R>(&self, f: F) -> Option<R> where
F: FnMut(&T) -> R, [src]
pub fn access<F, R>(&self, f: F) -> Option<R> where
F: FnMut(&T) -> R, [src]Access the inner data of the binding inside of the provided closure
This will return None and will not run the supplied closure if a lock to the inner
data cannot be obtained due to lock poisoning.
Example
let binding = DataBinding::new(false); let x = binding.access(|data| { // Return the opposite of what's in our data !data }); assert_eq!(x, Some(true));
pub fn read_cloned(&self) -> Option<T> where
T: Clone, [src]
pub fn read_cloned(&self) -> Option<T> where
T: Clone, [src]pub fn read_cloned_or_default(&self) -> T where
T: Clone, [src]
pub fn read_cloned_or_default(&self) -> T where
T: Clone, [src]Attempt to obtain a clone of the inner data or otherwise return the type’s default value
pub fn mutate<F, R>(&mut self, f: F) -> Option<R> where
F: FnMut(&mut T) -> R, [src]
pub fn mutate<F, R>(&mut self, f: F) -> Option<R> where
F: FnMut(&mut T) -> R, [src]Use a closure to mutate the inner data and notify the ChangeNotifier ( if set )
This will return None and will not run the supplied closure if a lock to the inner
data cannot be obtained due to lock poisoning.
Example
let mut binding = DataBinding::new(false); let x = binding.mutate(|data| { // Update the data *data = true; *data }); assert_eq!(x, Some(true)); assert_eq!(binding.read_cloned(), Some(true));
pub fn write(&mut self, v: T)[src]
pub fn write(&mut self, v: T)[src]Set the inner data directly and notify the ChangeNotifier ( if set )
Trait Implementations
impl<T: Clone> Clone for DataBinding<T> where
T: Debug + Default + Send + Sync, [src]
impl<T: Clone> Clone for DataBinding<T> where
T: Debug + Default + Send + Sync, [src]fn clone(&self) -> DataBinding<T>[src]
fn clone(&self) -> DataBinding<T>[src]Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)1.0.0[src]
fn clone_from(&mut self, source: &Self)1.0.0[src]Performs copy-assignment from source. Read more
impl<T: Default> Default for DataBinding<T> where
T: Debug + Default + Send + Sync, [src]
impl<T: Default> Default for DataBinding<T> where
T: Debug + Default + Send + Sync, [src]fn default() -> DataBinding<T>[src]
fn default() -> DataBinding<T>[src]Returns the “default value” for a type. Read more
impl<'de, T> Deserialize<'de> for DataBinding<T> where
T: Debug + Default + Send + Sync,
T: Default, [src]
impl<'de, T> Deserialize<'de> for DataBinding<T> where
T: Debug + Default + Send + Sync,
T: Default, [src]fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>, [src]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>, [src]Deserialize this value from the given Serde deserializer. Read more
impl<T> MessageData for DataBinding<T> where
Self: Clone,
T: 'static + Debug + Default + Send + Sync, [src]
impl<T> MessageData for DataBinding<T> where
Self: Clone,
T: 'static + Debug + Default + Send + Sync, [src]impl<T> Prefab for DataBinding<T> where
T: Debug + Default + Send + Sync, [src]
impl<T> Prefab for DataBinding<T> where
T: Debug + Default + Send + Sync, [src]fn from_prefab(data: PrefabValue) -> Result<Self, PrefabError>[src]
fn to_prefab(&self) -> Result<PrefabValue, PrefabError>[src]
Auto Trait Implementations
impl<T> RefUnwindSafe for DataBinding<T>
impl<T> Send for DataBinding<T>
impl<T> Sync for DataBinding<T>
impl<T> Unpin for DataBinding<T>
impl<T> UnwindSafe for DataBinding<T>
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone, [src]
impl<T> ToOwned for T where
T: Clone, [src]type Owned = T
type Owned = TThe resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn to_owned(&self) -> T[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)[src]
pub fn clone_into(&self, target: &mut T)[src]🔬 This is a nightly-only experimental API. (toowned_clone_into)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>, [src]
T: for<'de> Deserialize<'de>,