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]

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>
[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: Debug> Debug for BlockOn<T>[src]

impl<T: AsyncRead + Unpin> Read for BlockOn<T>[src]

impl<T: AsyncSeek + Unpin> Seek for BlockOn<T>[src]

impl<T: AsyncWrite + Unpin> Write for BlockOn<T>[src]

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

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.