Show the crate…
2 unstable releases
0.1.2 | Mar 3, 2021 |
---|---|
0.0.0 | Mar 3, 2021 |
#58 in #sink
16KB
260 lines
Fastsink, a QuickSink deriviative
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 fastsink::Action;
fastsink::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