Struct futures_lite::io::BlockOn
source · [−]pub struct BlockOn<T>(_);Expand description
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
sourceimpl<T> BlockOn<T>
impl<T> BlockOn<T>
sourcepub fn new(io: T) -> BlockOn<T>ⓘNotable traits for BlockOn<T>impl<T: AsyncRead + Unpin> Read for BlockOn<T>impl<T: AsyncWrite + Unpin> Write for BlockOn<T>
pub fn new(io: T) -> BlockOn<T>ⓘNotable traits for BlockOn<T>impl<T: AsyncRead + Unpin> Read for BlockOn<T>impl<T: AsyncWrite + Unpin> Write for BlockOn<T>
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);sourcepub fn get_ref(&self) -> &T
pub fn get_ref(&self) -> &T
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();sourcepub fn get_mut(&mut self) -> &mut T
pub fn get_mut(&mut self) -> &mut T
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();sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
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
sourceimpl<T: AsyncBufRead + Unpin> BufRead for BlockOn<T>
impl<T: AsyncBufRead + Unpin> BufRead for BlockOn<T>
sourcefn fill_buf(&mut self) -> Result<&[u8]>
fn fill_buf(&mut self) -> Result<&[u8]>
Returns the contents of the internal buffer, filling it with more data from the inner reader if it is empty. Read more
sourcefn consume(&mut self, amt: usize)
fn consume(&mut self, amt: usize)
Tells this buffer that amt bytes have been consumed from the buffer,
so they should no longer be returned in calls to read. Read more
sourcefn has_data_left(&mut self) -> Result<bool, Error>
fn has_data_left(&mut self) -> Result<bool, Error>
buf_read_has_data_left)Check if the underlying Read has any data left to be read. Read more
1.0.0 · sourcefn read_until(
&mut self,
byte: u8,
buf: &mut Vec<u8, Global>
) -> Result<usize, Error>
fn read_until(
&mut self,
byte: u8,
buf: &mut Vec<u8, Global>
) -> Result<usize, Error>
Read all bytes into buf until the delimiter byte or EOF is reached. Read more
1.0.0 · sourcefn read_line(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_line(&mut self, buf: &mut String) -> Result<usize, Error>
Read all bytes until a newline (the 0xA byte) is reached, and append
them to the provided buffer. You do not need to clear the buffer before
appending. Read more
sourceimpl<T: AsyncRead + Unpin> Read for BlockOn<T>
impl<T: AsyncRead + Unpin> Read for BlockOn<T>
sourcefn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
1.36.0 · sourcefn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
Like read, except that it reads into a slice of buffers. Read more
sourcefn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
can_vector)Determines if this Reader has an efficient read_vectored
implementation. Read more
1.0.0 · sourcefn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
Read all bytes until EOF in this source, placing them into buf. Read more
1.0.0 · sourcefn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
Read all bytes until EOF in this source, appending them to buf. Read more
1.6.0 · sourcefn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
Read the exact number of bytes required to fill buf. Read more
sourcefn read_buf(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
read_buf)Pull some bytes from this source into the specified buffer. Read more
sourcefn read_buf_exact(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
read_buf)Read the exact number of bytes required to fill buf. Read more
1.0.0 · sourcefn by_ref(&mut self) -> &mut Self
fn by_ref(&mut self) -> &mut Self
Creates a “by reference” adaptor for this instance of Read. Read more
sourceimpl<T: AsyncSeek + Unpin> Seek for BlockOn<T>
impl<T: AsyncSeek + Unpin> Seek for BlockOn<T>
sourcefn seek(&mut self, pos: SeekFrom) -> Result<u64>
fn seek(&mut self, pos: SeekFrom) -> Result<u64>
Seek to an offset, in bytes, in a stream. Read more
1.55.0 · sourcefn rewind(&mut self) -> Result<(), Error>
fn rewind(&mut self) -> Result<(), Error>
Rewind to the beginning of a stream. Read more
sourceimpl<T: AsyncWrite + Unpin> Write for BlockOn<T>
impl<T: AsyncWrite + Unpin> Write for BlockOn<T>
sourcefn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
Write a buffer into this writer, returning how many bytes were written. Read more
sourcefn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
sourcefn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector)Determines if this Writer has an efficient write_vectored
implementation. Read more
1.0.0 · sourcefn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Attempts to write an entire buffer into this writer. Read more
sourcefn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
write_all_vectored)Attempts to write multiple buffers into this writer. Read more
Auto Trait Implementations
impl<T> RefUnwindSafe for BlockOn<T> where
T: RefUnwindSafe,
impl<T> Send for BlockOn<T> where
T: Send,
impl<T> Sync for BlockOn<T> where
T: Sync,
impl<T> Unpin for BlockOn<T> where
T: Unpin,
impl<T> UnwindSafe for BlockOn<T> where
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more