amadeus_core/
source.rs

1use std::{error::Error, fmt::Debug};
2
3use crate::{
4	par_sink::{DistributedSink, ParallelSink}, par_stream::{DistributedStream, ParallelStream}
5};
6
7pub trait Source: Clone + Debug {
8	type Item;
9	type Error: Error;
10
11	type ParStream: ParallelStream<Item = Result<Self::Item, Self::Error>>;
12	type DistStream: DistributedStream<Item = Result<Self::Item, Self::Error>>;
13
14	fn par_stream(self) -> Self::ParStream;
15	fn dist_stream(self) -> Self::DistStream;
16}
17
18pub trait Destination: Clone + Debug {
19	type Item;
20	type Error: Error;
21
22	type ParSink: ParallelSink<Self::Item>;
23	type DistSink: DistributedSink<Self::Item>;
24
25	fn par_sink(self) -> Self::ParSink;
26	fn dist_sink(self) -> Self::DistSink;
27}