A Simplified API to work with Tokio's SplitSink and SplitStream
Motivation
Although Tokio is extremely powerful, somme of its features have been less than intuitive to me. So I built this crate to simplify interracting with Tokio in the ways that I usually do:
- Writing to an IO without really wanting to do much with what happens then
- Subscribing one or several callbacks to an IO.
Usage
This API should only be used from inside a Tokio Runtime: it will try to spawn Tokio Tasks and will thus panic if it's not the case.
Standard Usage: Multiple Callbacks
Filtering
You can use filters to have your callbacks only be called when the frame matches some criterion.
Single Callback Tip
Every time you use subscribe(callback)
, you endure the cost of one more futures::sync::mpsc::channel
,
and of one frame.clone()
per callback call.
It's not a high cost, but if you only have one callback, you can cut these costs by passing your callback
as a filter that always returns None
.