#![no_std]
#[cfg(any(test, feature = "blocking"))]
extern crate std;
extern crate alloc;
use core::sync::atomic::AtomicPtr;
use core::sync::atomic::Ordering::{SeqCst, Relaxed};
mod tests;
pub mod slot;
pub mod fifo;
pub mod channel;
pub use channel::*;
#[cfg(feature = "blocking")]
mod fn_block_on;
#[cfg(feature = "blocking")]
#[doc(hidden)]
pub use fn_block_on::block_on;
fn try_swap_ptr<T>(atomic_ptr: &AtomicPtr<T>, old: *mut T, new: *mut T) -> bool {
atomic_ptr.compare_exchange(old, new, SeqCst, Relaxed).is_ok()
}