8 releases

0.3.4 Jun 26, 2024
0.3.3 Jun 26, 2024
0.3.1 Oct 15, 2023
0.2.3 Jul 25, 2023
0.1.2 Apr 19, 2023

#1242 in Rust patterns

Download history 44/week @ 2024-07-23 21/week @ 2024-07-30 9/week @ 2024-09-10 2/week @ 2024-09-17 2/week @ 2024-09-24 13/week @ 2024-10-01

399 downloads per month

MIT/Apache

62KB
1.5K SLoC

sod-mpsc

sod::Service implementations to interact with std::sync::mpsc queues.

Service Impls

  • 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.

Example

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);

Dependencies

~205–650KB
~15K SLoC