#session #types #async #channel #protocol

dialectic-tokio-mpsc

A backend for the Dialectic crate using Tokio’s MPSC channels

1 unstable release

0.1.0 Apr 1, 2021

#19 in #session


Used in 2 crates

MIT license

160KB
2K SLoC

Rust license: MIT crates.io docs.rs documentation

This crate contains the Tokio/MPSC backend for Dialectic. It supports send/receive operations over all types which are Send + Any. This is useful for inter-task and inter-thread communication, especially if you're working on a protocol which needs to be tested locally and is written to be backend-agnostic. There are a few important types:

  • The dialectic_tokio_mpsc::Chan<P> synonym is a quick type synonym for a channel which uses a bounded MPSC Sender/Receiver pair, and analogously the dialectic_tokio_mpsc::UnboundedChan<P> provides a similar functionality for unbounded MPSC channels.
  • The dialectic_tokio_mpsc::Receiver/Sender/UnboundedReceiver/UnboundedSender types transparently wrap the underlying MPSC receiver/sender types. If not for the orphan rules, Dialectic's Transmitter/Receiver/Transmit/Receive traits would be directly implemented on the tokio::mpsc types, but Rust does not allow that.
  • Addditionally, dialectic_tokio_mpsc::channel() and unbounded_channel() are provided for conveniently constructing pairs of these transport types.

Dependencies

~4.5MB
~81K SLoC