Struct futures_lite::io::BlockOn [−][src]
pub struct BlockOn<T>(_);
Blocks on all async I/O operations and implements std::io traits.
Sometimes async I/O needs to be used in a blocking manner. If calling future::block_on()
manually all the time becomes too tedious, use this type for more convenient blocking on async
I/O operations.
This type implements traits Read, Write, or
Seek if the inner type implements AsyncRead, AsyncWrite, or
AsyncSeek, respectively.
If writing data through the Write trait, make sure to flush before
dropping the BlockOn handle or some buffered data might get lost.
Examples
use futures_lite::io::BlockOn; use futures_lite::pin; use std::io::Read; let reader: &[u8] = b"hello"; pin!(reader); let mut blocking_reader = BlockOn::new(reader); let mut contents = String::new(); // This line blocks - note that there is no await: blocking_reader.read_to_string(&mut contents)?;
Implementations
impl<T> BlockOn<T>[src]
impl<T> BlockOn<T>[src]pub fn new(io: T) -> BlockOn<T>ⓘ[src]
Wraps an async I/O handle into a blocking interface.
Examples
use futures_lite::io::BlockOn; use futures_lite::pin; let reader: &[u8] = b"hello"; pin!(reader); let blocking_reader = BlockOn::new(reader);
pub fn get_ref(&self) -> &T[src]
Gets a reference to the async I/O handle.
Examples
use futures_lite::io::BlockOn; use futures_lite::pin; let reader: &[u8] = b"hello"; pin!(reader); let blocking_reader = BlockOn::new(reader); let r = blocking_reader.get_ref();
pub fn get_mut(&mut self) -> &mut T[src]
Gets a mutable reference to the async I/O handle.
Examples
use futures_lite::io::BlockOn; use futures_lite::pin; let reader: &[u8] = b"hello"; pin!(reader); let mut blocking_reader = BlockOn::new(reader); let r = blocking_reader.get_mut();
pub fn into_inner(self) -> T[src]
Extracts the inner async I/O handle.
Examples
use futures_lite::io::BlockOn; use futures_lite::pin; let reader: &[u8] = b"hello"; pin!(reader); let blocking_reader = BlockOn::new(reader); let inner = blocking_reader.into_inner();
Trait Implementations
impl<T: AsyncRead + Unpin> Read for BlockOn<T>[src]
impl<T: AsyncRead + Unpin> Read for BlockOn<T>[src]fn read(&mut self, buf: &mut [u8]) -> Result<usize>[src]
pub fn read_vectored(
&mut self,
bufs: &mut [IoSliceMut<'_>]
) -> Result<usize, Error>1.36.0[src]
&mut self,
bufs: &mut [IoSliceMut<'_>]
) -> Result<usize, Error>
pub fn is_read_vectored(&self) -> bool[src]
pub unsafe fn initializer(&self) -> Initializer[src]
pub fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>1.0.0[src]
pub fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>1.0.0[src]
pub fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>1.6.0[src]
pub fn by_ref(&mut self) -> &mut Self1.0.0[src]
pub fn bytes(self) -> Bytes<Self>1.0.0[src]
pub fn chain<R>(self, next: R) -> Chain<Self, R> where
R: Read, 1.0.0[src]
R: Read,
pub fn take(self, limit: u64) -> Take<Self>1.0.0[src]
impl<T: AsyncWrite + Unpin> Write for BlockOn<T>[src]
impl<T: AsyncWrite + Unpin> Write for BlockOn<T>[src]fn write(&mut self, buf: &[u8]) -> Result<usize>[src]
fn flush(&mut self) -> Result<()>[src]
pub fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>1.36.0[src]
pub fn is_write_vectored(&self) -> bool[src]
pub fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>1.0.0[src]
pub fn write_all_vectored(
&mut self,
bufs: &mut [IoSlice<'_>]
) -> Result<(), Error>[src]
&mut self,
bufs: &mut [IoSlice<'_>]
) -> Result<(), Error>
pub fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<(), Error>1.0.0[src]
pub fn by_ref(&mut self) -> &mut Self1.0.0[src]
Auto Trait Implementations
impl<T> RefUnwindSafe for BlockOn<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Send for BlockOn<T> where
T: Send,
T: Send,
impl<T> Sync for BlockOn<T> where
T: Sync,
T: Sync,
impl<T> Unpin for BlockOn<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for BlockOn<T> where
T: UnwindSafe,
T: UnwindSafe,