Crate quicksink

source ·
Expand description

Create a Sink implementation from an initial value and a closure returning a Future.

This is very similar to how futures::stream::unfold creates a Stream implementation from a seed value and a future-returning closure.

Examples

use async_std::io;
use futures::prelude::*;
use quicksink::Action;

quicksink::make_sink(io::stdout(), |mut stdout, action| async move {
    match action {
        Action::Send(x) => stdout.write_all(x).await?,
        Action::Flush => stdout.flush().await?,
        Action::Close => stdout.close().await?
    }
    Ok::<_, io::Error>(stdout)
});

Panics

  • If any of the Sink methods produce an error, the sink transitions to a failure state and none of its methods must be called afterwards or else a panic will occur.
  • If Sink::poll_close has been called, no other sink method must be called afterwards or else a panic will be caused.

Structs

  • SinkImpl implements the Sink trait.

Enums

  • The command given to the closure so that it can perform appropriate action.

Functions

  • Returns a Sink impl based on the initial value and the given closure.