diff --git a/src/param/internals.rs b/src/param/internals.rs index 26963e2e..c77d644f 100644 --- a/src/param/internals.rs +++ b/src/param/internals.rs @@ -248,5 +248,20 @@ macro_rules! impl_persistent_field_parking_lot_mutex { }; } +impl<'a, T> PersistentField<'a, T> for atomic_refcell::AtomicRefCell +where + T: serde::Serialize + serde::Deserialize<'a> + Send + Sync, +{ + fn set(&self, new_value: T) { + *self.borrow_mut() = new_value; + } + fn map(&self, f: F) -> R + where + F: Fn(&T) -> R, + { + f(&self.borrow()) + } +} + impl_persistent_field_parking_lot_mutex!(parking_lot::Mutex); impl_persistent_field_parking_lot_mutex!(parking_lot::FairMutex);