use std::future::Future;
use crate::Client;
use crate::config::CallOptions;
use crate::error::Error;
use crate::types::{SystemOneRequest, SystemOneResponse};
pub trait Backend: Send + Sync {
fn name(&self) -> &str;
fn system_one(
&self,
req: &SystemOneRequest,
opts: &CallOptions,
) -> impl Future<Output = Result<SystemOneResponse, Error>> + Send;
}
impl Backend for Client {
fn name(&self) -> &str {
"typesafe"
}
fn system_one(
&self,
req: &SystemOneRequest,
opts: &CallOptions,
) -> impl Future<Output = Result<SystemOneResponse, Error>> + Send {
let this = self.clone();
let req = req.clone();
let opts = opts.clone();
async move { this.system_one_with(&req, opts).await }
}
}