1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use crate::{
utils::{event_flatten::EventFlatten, stream_backoff::StreamBackoff},
watcher,
};
use backoff::backoff::Backoff;
use futures::{Stream, TryStream};
pub trait WatchStreamExt: Stream {
fn backoff<B>(self, b: B) -> StreamBackoff<Self, B>
where
B: Backoff,
Self: TryStream + Sized,
{
StreamBackoff::new(self, b)
}
fn applied_objects<K>(self) -> EventFlatten<Self, K>
where
Self: Stream<Item = Result<watcher::Event<K>, watcher::Error>> + Sized,
{
EventFlatten::new(self, false)
}
fn touched_objects<K>(self) -> EventFlatten<Self, K>
where
Self: Stream<Item = Result<watcher::Event<K>, watcher::Error>> + Sized,
{
EventFlatten::new(self, true)
}
}
impl<St: ?Sized> WatchStreamExt for St where St: Stream {}