#sink #future #async

quicksink

从某些值和一个返回Future的闭包创建一个Sink

3个版本

0.1.2 2020年4月7日
0.1.1 2020年1月7日
0.1.0 2019年12月10日

异步中排名1362

Download history 34235/week @ 2024-03-14 41075/week @ 2024-03-21 40662/week @ 2024-03-28 46787/week @ 2024-04-04 43616/week @ 2024-04-11 39771/week @ 2024-04-18 34760/week @ 2024-04-25 31627/week @ 2024-05-02 30422/week @ 2024-05-09 30498/week @ 2024-05-16 44347/week @ 2024-05-23 39037/week @ 2024-05-30 32589/week @ 2024-06-06 35023/week @ 2024-06-13 35144/week @ 2024-06-20 25499/week @ 2024-06-27

每月下载量134,579
用于212个crates(直接使用9个)

Apache-2.0 OR MIT

15KB
260 代码行

QuickSink

允许从初始值和一个返回Future的闭包创建一个Sink的实现。

许可协议

本项目受以下任一协议的许可:

您可选择。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您提交给本项目并有意包含的贡献,将按照上述双重许可,不附加任何额外条款或条件。


lib.rs:

从初始值和一个返回Future的闭包创建一个Sink实现。

这与futures::stream::unfold如何从一个种子值和一个返回Future的闭包创建一个Stream实现非常相似。

示例

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)
});

恐慌

  • 如果任何Sink方法产生错误,则sink过渡到失败状态,之后不得调用其任何方法,否则将发生恐慌。
  • 如果已调用Sink::poll_close,之后不得调用其他sink方法,否则将引起恐慌。

依赖关系

~98KB