1use anyhow::Result;
3use futures_util::{Stream, StreamExt};
4use quic_rpc::transport::flume::FlumeConnector;
5
6pub mod blobs;
7pub mod tags;
8
9pub(crate) type MemConnector =
11 FlumeConnector<crate::rpc::proto::Response, crate::rpc::proto::Request>;
12
13fn flatten<T, E1, E2>(
14 s: impl Stream<Item = Result<Result<T, E1>, E2>>,
15) -> impl Stream<Item = Result<T>>
16where
17 E1: std::error::Error + Send + Sync + 'static,
18 E2: std::error::Error + Send + Sync + 'static,
19{
20 s.map(|res| match res {
21 Ok(Ok(res)) => Ok(res),
22 Ok(Err(err)) => Err(err.into()),
23 Err(err) => Err(err.into()),
24 })
25}