mod noop;
mod rotate;
mod status;
use std::future::Future;
use bytes::Bytes;
pub use noop::Noop;
pub use rotate::Rotate;
pub use status::StatusPolicy;
use crate::Result;
use crate::request::{Request, Response};
pub trait Backend: Send + Sync + 'static {
type Client: Client;
fn connect(&self) -> impl Future<Output = Result<Self::Client>> + Send;
}
pub trait Client: Send + Sync + 'static {
fn fetch(&self, request: &Request) -> impl Future<Output = Result<Response<()>>> + Send;
fn body(&self) -> impl Future<Output = Result<Bytes>> + Send;
}