pub trait IoCapability {
type Handle: Send;
type Reader: Send + Unpin;
type Writer: Send + Unpin;
type Error: Into<GuestError>;
// Required methods
fn new_writer(
&self,
handle: &Self::Handle,
) -> Result<Self::Writer, Self::Error>;
fn new_reader(
&self,
handle: &Self::Handle,
) -> Result<Self::Reader, Self::Error>;
fn read(
&self,
reader: &mut Self::Reader,
len: usize,
) -> impl Future<Output = Result<IoFrame, Self::Error>> + Send;
fn write(
&self,
writer: &mut Self::Writer,
bytes: &[u8],
) -> impl Future<Output = Result<(), Self::Error>> + Send;
}Expand description
The capabilities that any subsystem implementation needs to provide
Required Associated Types§
type Handle: Send
type Reader: Send + Unpin
type Writer: Send + Unpin
type Error: Into<GuestError>
Required Methods§
Sourcefn new_writer(&self, handle: &Self::Handle) -> Result<Self::Writer, Self::Error>
fn new_writer(&self, handle: &Self::Handle) -> Result<Self::Writer, Self::Error>
Create a new writer for the given handle
Sourcefn new_reader(&self, handle: &Self::Handle) -> Result<Self::Reader, Self::Error>
fn new_reader(&self, handle: &Self::Handle) -> Result<Self::Reader, Self::Error>
Create a new reader for the given handle
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.