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".

Implementations on Foreign Types§

Source§

impl PersistentField<'_, bool> for Atomic<bool>

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 Atomic<i8>

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 Atomic<i16>

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 Atomic<i32>

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 Atomic<i64>

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 Atomic<isize>

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 Atomic<u8>

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 Atomic<u16>

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 Atomic<u32>

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 Atomic<u64>

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 Atomic<usize>

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<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<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<Mutex<RawFairMutex, 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<RawMutex, 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<RawRwLock, 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 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 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 Mutex<RawFairMutex, 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<RawMutex, 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<RawRwLock, 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> PersistentField<'a, bool> for Arc<Atomic<bool>>

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<Atomic<i8>>

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<Atomic<i16>>

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<Atomic<i32>>

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<Atomic<i64>>

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<Atomic<isize>>

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<Atomic<u8>>

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<Atomic<u16>>

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<Atomic<u32>>

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<Atomic<u64>>

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<Atomic<usize>>

Source§

fn set(&self, new_value: usize)

Source§

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

Implementors§