From 4f3efd2d99cb8fd37dedb079cb05df50208fbb7d Mon Sep 17 00:00:00 2001 From: Benno Straub Date: Sat, 22 Jul 2023 10:46:06 +0200 Subject: [PATCH 1/3] Add serde support --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index c634072..6b66dc1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,7 @@ homepage = "https://github.com/thomcc/atomic_float" [features] default = ["atomic_f64"] atomic_f64 = [] +serde = ["dep:serde"] [dependencies] serde = { version = "1", optional = true, default-features = false } From 68e424f8062cb5a17e4dabac78f2dc0d2c05c37a Mon Sep 17 00:00:00 2001 From: Benno Straub Date: Fri, 28 Jul 2023 18:31:13 +0200 Subject: [PATCH 2/3] Add atomic-traits --- Cargo.toml | 2 +- src/atomic_f32.rs | 57 +++++++++++++++++++++++++++++++++++++++++++++++ src/atomic_f64.rs | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 115 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 6b66dc1..3863e85 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,10 +16,10 @@ homepage = "https://github.com/thomcc/atomic_float" [features] default = ["atomic_f64"] atomic_f64 = [] -serde = ["dep:serde"] [dependencies] serde = { version = "1", optional = true, default-features = false } +atomic-traits = { version = "0.3", optional = true } [dev-dependencies] serde_test = { version = "1", default-features = false } diff --git a/src/atomic_f32.rs b/src/atomic_f32.rs index be088a6..eeaa44a 100644 --- a/src/atomic_f32.rs +++ b/src/atomic_f32.rs @@ -817,3 +817,60 @@ impl PartialEq for AtomicF32 { self.load(Relaxed) == o.load(Relaxed) } } +#[cfg(feature = "atomic-traits")] +impl atomic_traits::Atomic for AtomicF32 { + type Type = f32; + + fn new(v: Self::Type) -> Self { + Self::new(v) + } + + fn get_mut(&mut self) -> &mut Self::Type { + self.get_mut() + } + + fn into_inner(self) -> Self::Type { + self.into_inner() + } + + fn load(&self, order: Ordering) -> Self::Type { + self.load(order) + } + + fn store(&self, val: Self::Type, order: Ordering) { + self.store(val, order) + } + + fn swap(&self, val: Self::Type, order: Ordering) -> Self::Type { + self.swap(val, order) + } + + fn compare_and_swap( + &self, + current: Self::Type, + new: Self::Type, + order: Ordering, + ) -> Self::Type { + self.compare_and_swap(current, new, order) + } + + fn compare_exchange( + &self, + current: Self::Type, + new: Self::Type, + success: Ordering, + failure: Ordering, + ) -> Result { + self.compare_exchange(current, new, success, failure) + } + + fn compare_exchange_weak( + &self, + current: Self::Type, + new: Self::Type, + success: Ordering, + failure: Ordering, + ) -> Result { + self.compare_exchange_weak(current, new, success, failure) + } +} diff --git a/src/atomic_f64.rs b/src/atomic_f64.rs index dbce8c5..618bf42 100644 --- a/src/atomic_f64.rs +++ b/src/atomic_f64.rs @@ -811,3 +811,60 @@ impl PartialEq for AtomicF64 { self.load(Relaxed) == o.load(Relaxed) } } +#[cfg(feature = "atomic-traits")] +impl atomic_traits::Atomic for AtomicF64 { + type Type = f64; + + fn new(v: Self::Type) -> Self { + Self::new(v) + } + + fn get_mut(&mut self) -> &mut Self::Type { + self.get_mut() + } + + fn into_inner(self) -> Self::Type { + self.into_inner() + } + + fn load(&self, order: Ordering) -> Self::Type { + self.load(order) + } + + fn store(&self, val: Self::Type, order: Ordering) { + self.store(val, order) + } + + fn swap(&self, val: Self::Type, order: Ordering) -> Self::Type { + self.swap(val, order) + } + + fn compare_and_swap( + &self, + current: Self::Type, + new: Self::Type, + order: Ordering, + ) -> Self::Type { + self.compare_and_swap(current, new, order) + } + + fn compare_exchange( + &self, + current: Self::Type, + new: Self::Type, + success: Ordering, + failure: Ordering, + ) -> Result { + self.compare_exchange(current, new, success, failure) + } + + fn compare_exchange_weak( + &self, + current: Self::Type, + new: Self::Type, + success: Ordering, + failure: Ordering, + ) -> Result { + self.compare_exchange_weak(current, new, success, failure) + } +} From 4c256bcdebd3ff39efcdbad37a8dccaa799aa418 Mon Sep 17 00:00:00 2001 From: Benno Straub Date: Thu, 28 Mar 2024 18:03:27 +0100 Subject: [PATCH 3/3] Update atomic_traits --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 3863e85..e3f9662 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ atomic_f64 = [] [dependencies] serde = { version = "1", optional = true, default-features = false } -atomic-traits = { version = "0.3", optional = true } +atomic-traits = { version = "0.4", optional = true } [dev-dependencies] serde_test = { version = "1", default-features = false }