pub trait Protocol<Input, Output, Client, Server, Error, InputStreamError = Error, OutputStreamError = Error>where
Server: Server<Error, InputStreamError, OutputStreamError>,
Client: Client<Error, InputStreamError, OutputStreamError>,{
const METHOD: Method;
// Required methods
fn run_server<F, Fut>(
request: <Server as Server<Error, InputStreamError, OutputStreamError>>::Request,
server_fn: F,
) -> impl Future<Output = Result<<Server as Server<Error, InputStreamError, OutputStreamError>>::Response, Error>> + Send
where F: Fn(Input) -> Fut + Send,
Fut: Future<Output = Result<Output, Error>> + Send;
fn run_client(
path: &str,
input: Input,
) -> impl Future<Output = Result<Output, Error>> + Send;
}
Expand description
Required Associated Constants§
Required Methods§
Sourcefn run_server<F, Fut>(
request: <Server as Server<Error, InputStreamError, OutputStreamError>>::Request,
server_fn: F,
) -> impl Future<Output = Result<<Server as Server<Error, InputStreamError, OutputStreamError>>::Response, Error>> + Send
fn run_server<F, Fut>( request: <Server as Server<Error, InputStreamError, OutputStreamError>>::Request, server_fn: F, ) -> impl Future<Output = Result<<Server as Server<Error, InputStreamError, OutputStreamError>>::Response, Error>> + Send
Run the server function on the server. The implementation should handle deserializing the input, running the server function, and serializing the output.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.