blob: 16ff27993beb41e69fb642c0d13a63a36e9984a8 [file] [log] [blame]
use ::io::MapNonBlock;
use std::io::{self, Read, Write};
pub trait TryRead {
fn try_read(&mut self, buf: &mut [u8]) -> io::Result<Option<usize>>;
}
pub trait TryWrite {
fn try_write(&mut self, buf: &[u8]) -> io::Result<Option<usize>>;
}
impl<T: Read> TryRead for T {
fn try_read(&mut self, dst: &mut [u8]) -> io::Result<Option<usize>> {
self.read(dst).map_non_block()
}
}
impl<T: Write> TryWrite for T {
fn try_write(&mut self, src: &[u8]) -> io::Result<Option<usize>> {
self.write(src).map_non_block()
}
}
pub trait TryAccept {
type Output;
fn accept(&self) -> io::Result<Option<Self::Output>>;
}