#operator #stream #tokio #rx #future

tokio-stream-ext

Stream extension with new operators, this will grow over the time

2 releases

0.1.5 Aug 31, 2021
0.1.4 Aug 27, 2021

#994 in Asynchronous

Download history 11/week @ 2023-11-16 16/week @ 2023-11-23 10/week @ 2023-11-30 2/week @ 2024-01-11 5/week @ 2024-01-18 13/week @ 2024-01-25 25/week @ 2024-02-01 65/week @ 2024-02-08 103/week @ 2024-02-15 155/week @ 2024-02-22 133/week @ 2024-02-29

472 downloads per month

Custom license

13KB
309 lines

Tokio StreamExt [WIP]

Stream extension with new operators, this will grow over the time.

Feel free to contribute!

Todo

  • [] Better readme
  • [] RustDoc
  • [] Further operators

Operators

Debounce

Debounce a stream until it is sattled over a given duration.

ReceiverStream::new(self.input)
    .debounce(Duration::from_millis(80)),

distinct until changed

Filters events, similar to the last value.

The initial value is always emitted.

ReceiverStream::new(self.input)
    .distinct_until_changed(),

Switch Map

Reactive composing of streams.

switch_map(ReceiverStream::new(keyboard), move |value| {
    if value == 'k' {
        Some(ReceiverStream::new(gamepad))
    } else {
        Some(ReceiverStream::new(joystick))
    }
});

Combine Latest

Collects a value from all streams and switch to a live mode. Every new combination will be emitted from now on.

switch_map(ReceiverStream::new(keyboard), move |value| {
    if value == 'k' {
        Some(ReceiverStream::new(gamepad))
    } else {
        Some(ReceiverStream::new(joystick))
    }
});

Dependencies

~2.7–4MB
~63K SLoC