tokio_stream_ext/
lib.rs

1use futures::Stream;
2use std::time::Duration;
3
4mod combine_latest;
5pub use combine_latest::{combine_latest, CombineLatest};
6
7mod switch_map;
8pub use switch_map::{switch_map, SwitchMap};
9
10mod distinct_until_changed;
11pub use distinct_until_changed::DistinctUntilChanged;
12
13mod debounce;
14pub use debounce::Debounce;
15
16pub trait StreamOpsExt: Stream {
17    fn distinct_until_changed<Item>(self) -> DistinctUntilChanged<Self, Item>
18    where
19        Self: Stream<Item = Item> + Sized,
20        Item: PartialEq,
21    {
22        DistinctUntilChanged::new(self)
23    }
24
25    fn debounce(self, debounce_time: Duration) -> Debounce<Self>
26    where
27        Self: Sized + Unpin,
28    {
29        Debounce::new(self, debounce_time)
30    }
31}
32
33impl<T: ?Sized> StreamOpsExt for T where T: Stream {}