Crates.io | sod-mpsc |
lib.rs | sod-mpsc |
version | 0.3.4 |
source | src |
created_at | 2023-04-19 04:26:08.295397 |
updated_at | 2024-06-26 13:50:53.478261 |
description | Service Oriented Design - Multi Producer Single Consumer |
homepage | |
repository | https://github.com/thill/sod |
max_upload_size | |
id | 843180 |
size | 8,390 |
sod::Service
implementations to interact with std::sync::mpsc
queues.
MpscSender
sends to a std::sync::mpsc::channel
.MpscSyncSender
sends to a std::sync::mpsc::sync_channel
and blocks if the channel is full.MpscSyncTrySender
tries to send to a std::sync::mpsc::sync_channel
and is able to be retried via sod::RetryService
when the channel is full.MpscReceiver
receives from a std::sync::mpsc::channel
or std::sync::mpsc::sync_channel
, blocking until an element is received.MpscTryReceiver
tries to receive from a std::sync::mpsc::channel
or std::sync::mpsc::sync_channel
, and is able to be retried via sod::Retryable
when the channel is empty.use sod::Service;
use sod_mpsc::{MpscSender, MpscReceiver};
use std::sync::mpsc;
let (tx, rx) = mpsc::channel();
let pusher = MpscSender::new(tx);
let poller = MpscReceiver::new(rx);
pusher.process(1).unwrap();
pusher.process(2).unwrap();
assert_eq!(poller.process(()).unwrap(), 1);
assert_eq!(poller.process(()).unwrap(), 2);