3 releases
0.1.2 | Apr 7, 2020 |
---|---|
0.1.1 | Jan 7, 2020 |
0.1.0 | Dec 10, 2019 |
#1435 in Asynchronous
30,606 downloads per month
Used in 111 crates
(10 directly)
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
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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
~105KB