#async #futures #sink

quicksink

Create a Sink from some value and a closure returning a Future

3 releases

0.1.2 Apr 7, 2020
0.1.1 Jan 7, 2020
0.1.0 Dec 10, 2019

#139 in Asynchronous

Download history 6341/week @ 2020-11-02 6358/week @ 2020-11-09 7579/week @ 2020-11-16 7476/week @ 2020-11-23 7563/week @ 2020-11-30 6574/week @ 2020-12-07 7438/week @ 2020-12-14 4387/week @ 2020-12-21 4058/week @ 2020-12-28 7711/week @ 2021-01-04 8166/week @ 2021-01-11 8075/week @ 2021-01-18 7652/week @ 2021-01-25 7866/week @ 2021-02-01 7541/week @ 2021-02-08 8192/week @ 2021-02-15

31,698 downloads per month
Used in 37 crates (4 directly)

Apache-2.0 OR MIT

15KB
260 lines

QuickSink

Allows creating an implementation of the Sink trait from an initial value and a closure returning a Future.

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


lib.rs:

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.

Dependencies

~96KB