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
use super::Signal;
use crate::Error;
use wasmrs_runtime::ConditionallySafe;
pub trait Observer<Item, Err>
where
Item: ConditionallySafe,
Err: ConditionallySafe,
{
fn send_signal(&self, signal: Signal<Item, Err>) -> Result<(), Error>;
fn send_result(&self, result: Result<Item, Err>) -> Result<(), Error> {
self.send_signal(match result {
Ok(ok) => Signal::Ok(ok),
Err(err) => Signal::Err(err),
})
}
fn send(&self, item: Item) -> Result<(), Error> {
self.send_signal(Signal::Ok(item))
}
fn error(&self, err: Err) -> Result<(), Error> {
self.send_signal(Signal::Err(err))
}
fn complete(&self) {
let _ = self.send_signal(Signal::Complete);
}
fn is_complete(&self) -> bool;
}