Skip to main content

PersistentField

Trait PersistentField 

Source
pub trait PersistentField<'a, T>: Send + Sync
where T: Serialize + Deserialize<'a>,
{ // Required methods fn set(&self, new_value: T); fn map<F, R>(&self, f: F) -> R where F: Fn(&T) -> R; }
Expand description

Handles the functionality needed for persisting a non-parameter fields in a plugin’s state. These types can be used with Params#[persist = "..."] attributes.

This should be implemented for some type with interior mutability containing a T.

Required Methods§

Source

fn set(&self, new_value: T)

Update the stored T value using interior mutability.

Source

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Get a reference to the stored T value, and apply a function to it. This is used to serialize the T value.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl PersistentField<'_, bool> for AtomicBool

Source§

fn set(&self, new_value: bool)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&bool) -> R,

Source§

impl PersistentField<'_, f64> for AtomicF64

Source§

fn set(&self, new_value: f64)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&f64) -> R,

Source§

impl PersistentField<'_, i8> for AtomicI8

Source§

fn set(&self, new_value: i8)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&i8) -> R,

Source§

impl PersistentField<'_, i16> for AtomicI16

Source§

fn set(&self, new_value: i16)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&i16) -> R,

Source§

impl PersistentField<'_, i32> for AtomicI32

Source§

fn set(&self, new_value: i32)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&i32) -> R,

Source§

impl PersistentField<'_, i64> for AtomicI64

Source§

fn set(&self, new_value: i64)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&i64) -> R,

Source§

impl PersistentField<'_, isize> for AtomicIsize

Source§

fn set(&self, new_value: isize)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&isize) -> R,

Source§

impl PersistentField<'_, u8> for AtomicU8

Source§

fn set(&self, new_value: u8)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&u8) -> R,

Source§

impl PersistentField<'_, u16> for AtomicU16

Source§

fn set(&self, new_value: u16)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&u16) -> R,

Source§

impl PersistentField<'_, u32> for AtomicU32

Source§

fn set(&self, new_value: u32)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&u32) -> R,

Source§

impl PersistentField<'_, u64> for AtomicU64

Source§

fn set(&self, new_value: u64)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&u64) -> R,

Source§

impl PersistentField<'_, usize> for AtomicUsize

Source§

fn set(&self, new_value: usize)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&usize) -> R,

Source§

impl<'a> PersistentField<'a, bool> for Arc<AtomicBool>

Source§

fn set(&self, new_value: bool)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&bool) -> R,

Source§

impl<'a> PersistentField<'a, f32> for Arc<AtomicF32>

Source§

fn set(&self, new_value: f32)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&f32) -> R,

Source§

impl<'a> PersistentField<'a, f64> for Arc<AtomicF64>

Source§

fn set(&self, new_value: f64)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&f64) -> R,

Source§

impl<'a> PersistentField<'a, i8> for Arc<AtomicI8>

Source§

fn set(&self, new_value: i8)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&i8) -> R,

Source§

impl<'a> PersistentField<'a, i16> for Arc<AtomicI16>

Source§

fn set(&self, new_value: i16)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&i16) -> R,

Source§

impl<'a> PersistentField<'a, i32> for Arc<AtomicI32>

Source§

fn set(&self, new_value: i32)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&i32) -> R,

Source§

impl<'a> PersistentField<'a, i64> for Arc<AtomicI64>

Source§

fn set(&self, new_value: i64)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&i64) -> R,

Source§

impl<'a> PersistentField<'a, isize> for Arc<AtomicIsize>

Source§

fn set(&self, new_value: isize)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&isize) -> R,

Source§

impl<'a> PersistentField<'a, u8> for Arc<AtomicU8>

Source§

fn set(&self, new_value: u8)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&u8) -> R,

Source§

impl<'a> PersistentField<'a, u16> for Arc<AtomicU16>

Source§

fn set(&self, new_value: u16)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&u16) -> R,

Source§

impl<'a> PersistentField<'a, u32> for Arc<AtomicU32>

Source§

fn set(&self, new_value: u32)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&u32) -> R,

Source§

impl<'a> PersistentField<'a, u64> for Arc<AtomicU64>

Source§

fn set(&self, new_value: u64)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&u64) -> R,

Source§

impl<'a> PersistentField<'a, usize> for Arc<AtomicUsize>

Source§

fn set(&self, new_value: usize)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&usize) -> R,

Source§

impl<'a, T> PersistentField<'a, T> for Arc<Mutex<T>>
where T: Serialize + Deserialize<'a> + Send + Sync,

Source§

fn set(&self, new_value: T)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Source§

impl<'a, T> PersistentField<'a, T> for Arc<RwLock<T>>
where T: Serialize + Deserialize<'a> + Send + Sync,

Source§

fn set(&self, new_value: T)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Source§

impl<'a, T> PersistentField<'a, T> for Arc<AtomicRefCell<T>>
where T: Serialize + Deserialize<'a> + Send + Sync,

Source§

fn set(&self, new_value: T)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Source§

impl<'a, T> PersistentField<'a, T> for Arc<AtomicCell<T>>
where T: Serialize + Deserialize<'a> + Copy + Send,

Source§

fn set(&self, new_value: T)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Source§

impl<'a, T> PersistentField<'a, T> for Arc<FairMutex<T>>
where T: Serialize + Deserialize<'a> + Send + Sync,

Source§

fn set(&self, new_value: T)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Source§

impl<'a, T> PersistentField<'a, T> for Arc<Mutex<T>>
where T: Serialize + Deserialize<'a> + Send + Sync,

Source§

fn set(&self, new_value: T)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Source§

impl<'a, T> PersistentField<'a, T> for Arc<RwLock<T>>
where T: Serialize + Deserialize<'a> + Send + Sync,

Source§

fn set(&self, new_value: T)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Source§

impl<'a, T> PersistentField<'a, T> for Mutex<T>
where T: Serialize + Deserialize<'a> + Send + Sync,

Source§

fn set(&self, new_value: T)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Source§

impl<'a, T> PersistentField<'a, T> for RwLock<T>
where T: Serialize + Deserialize<'a> + Send + Sync,

Source§

fn set(&self, new_value: T)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Source§

impl<'a, T> PersistentField<'a, T> for AtomicRefCell<T>
where T: Serialize + Deserialize<'a> + Send + Sync,

Source§

fn set(&self, new_value: T)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Source§

impl<'a, T> PersistentField<'a, T> for AtomicCell<T>
where T: Serialize + Deserialize<'a> + Copy + Send,

Source§

fn set(&self, new_value: T)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Source§

impl<'a, T> PersistentField<'a, T> for FairMutex<T>
where T: Serialize + Deserialize<'a> + Send + Sync,

Source§

fn set(&self, new_value: T)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Source§

impl<'a, T> PersistentField<'a, T> for Mutex<T>
where T: Serialize + Deserialize<'a> + Send + Sync,

Source§

fn set(&self, new_value: T)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Source§

impl<'a, T> PersistentField<'a, T> for RwLock<T>
where T: Serialize + Deserialize<'a> + Send + Sync,

Source§

fn set(&self, new_value: T)

Source§

fn map<F, R>(&self, f: F) -> R
where F: Fn(&T) -> R,

Implementors§