mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-26 00:31:02 +00:00
implement serialization for atomic integer types
This commit is contained in:
@@ -839,3 +839,55 @@ where
|
||||
self.0.serialize(serializer)
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
#[cfg(feature = "std")]
|
||||
use std::sync::atomic;
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
macro_rules! atomic_impl {
|
||||
($ty:path, $method:ident $($cast:tt)*) => {
|
||||
impl Serialize for $ty {
|
||||
#[inline]
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
serializer.$method(self.load(atomic::Ordering::SeqCst) $($cast)*)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
atomic_impl!(atomic::AtomicBool, serialize_bool);
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
atomic_impl!(atomic::AtomicI8, serialize_i8);
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
atomic_impl!(atomic::AtomicI16, serialize_i16);
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
atomic_impl!(atomic::AtomicI32, serialize_i32);
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
atomic_impl!(atomic::AtomicI64, serialize_i64);
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
atomic_impl!(atomic::AtomicIsize, serialize_i64 as i64);
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
atomic_impl!(atomic::AtomicU8, serialize_u8);
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
atomic_impl!(atomic::AtomicU16, serialize_u16);
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
atomic_impl!(atomic::AtomicU32, serialize_u32);
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
atomic_impl!(atomic::AtomicU64, serialize_u64);
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
atomic_impl!(atomic::AtomicUsize, serialize_u64 as u64);
|
||||
|
||||
Reference in New Issue
Block a user