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 {}