Trait optee_utee::net::StdCompatRead
source · pub trait StdCompatRead {
// Required method
fn read(&mut self, buf: &mut [u8]) -> Result<usize, SocketError>;
// Provided method
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), SocketError> { ... }
}
Expand description
A trait used for convenience; import it so that the code remains consistent with the std version (with the only difference being the return error type).
Take TcpStream as example:
use optee_utee::net::{TcpStream, SocketError};
fn read_without_compact_trait(stream: &mut TcpStream, mut buf: &mut [u8]) -> Result<(), SocketError> {
use optee_utee::ErrorKind;
while !buf.is_empty() {
match stream.recv(buf) {
Ok(0) => break,
Ok(n) => buf = &mut buf[n..],
Err(e) => return Err(e),
}
}
if !buf.is_empty() {
return Err(SocketError::Tee(ErrorKind::Generic));
}
Ok(())
}
fn read_with_compact_trait(stream: &mut TcpStream, buf: &mut [u8]) -> Result<(), SocketError> {
use optee_utee::net::StdCompatRead;
stream.read_exact(buf)
}