lowlet 0.1.2

Low-latency IPC library using shared memory and lock-free structures
Documentation
mod broadcast;
mod receiver;
mod sender;

use std::sync::atomic::AtomicBool;
use std::sync::Arc;

use crate::buf::RingBuffer;
pub use broadcast::{broadcast, BroadcastReceiver, BroadcastSender};
pub use receiver::{DrainIter, Receiver};
pub use sender::Sender;

pub fn channel<T, const N: usize>() -> (Sender<T, N>, Receiver<T, N>) {
    let buf = Arc::new(RingBuffer::<T, N>::new());
    let closed = Arc::new(AtomicBool::new(false));
    (
        Sender::new_with_closed(buf.clone(), closed.clone()),
        Receiver::new_with_closed(buf, closed),
    )
}