tokio-stream-ext

Crates.iotokio-stream-ext
lib.rstokio-stream-ext
version0.1.5
sourcesrc
created_at2021-08-27 14:08:24.652363
updated_at2021-08-31 15:23:15.839085
descriptionStream extension with new operators, this will grow over the time
homepage
repositoryhttps://github.com/Alexander89/tokio-stream-ext
max_upload_size
id443099
size13,639
Alexander Halemba (Alexander89)

documentation

README

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))
    }
});
Commit count: 4

cargo fmt