1use core::fmt::Display;
4
5use crate::transport::{ReadTransport, TransportError, WriteTransport};
6
7pub struct Client<RT: ReadTransport + Unpin, WT: WriteTransport + Unpin> {
9 pub(crate) reader: RT,
10 pub(crate) writer: WT,
11}
12
13impl<RT: ReadTransport + Unpin, WT: WriteTransport + Unpin> Client<RT, WT> {
14 pub fn new(reader: RT, writer: WT) -> Self {
15 Self { reader, writer }
16 }
17}
18
19#[derive(Debug, thiserror::Error)]
20pub enum ClientError<RE: Display, WE: Display> {
21 #[error(transparent)]
22 Transport(#[from] TransportError<RE, WE>),
23 #[error("failed: status={status}, message={message}")]
24 Failed { status: u8, message: String },
25}