#适配器 #io-write #io #writable #data #different #human-readable

io-adapters

适配器,用于在不同可写 API 之间进行转换

3 个版本 (破坏性更新)

0.3.0 2023 年 12 月 10 日
0.2.0 2023 年 12 月 9 日
0.1.0 2023 年 12 月 6 日
0.0.0 2023 年 12 月 6 日

#2271 in Rust 模式

Download history 16/week @ 2024-04-02 22/week @ 2024-04-09 1/week @ 2024-05-14 13/week @ 2024-05-21 7/week @ 2024-05-28 9/week @ 2024-06-04 15/week @ 2024-06-11 16/week @ 2024-06-18 28/week @ 2024-06-25 2/week @ 2024-07-02 11/week @ 2024-07-09 11/week @ 2024-07-16

61 个月下载量
3 crates 中使用

Apache-2.0

8KB
62

I/O 适配器

此 crate 提供了在标准库中组合可写特征的适配器。以下转换可用

  • fmt::Write -> io::Write
  • io::Write -> hash::Hasher

使用场景

假设你正在编写一个函数,该函数以零分配方式生成可读数据。最佳接口看起来像这样

fn foo<Out: fmt::Write>(mut output: Out, ...) {
    // Do stuff
    writeln!(output, "My computation: {result}").unwrap();
}

注意使用了 fmt::Write:使用此特征提供了类型系统保证,即写入的数据是有效的 UTF-8,因此它应该优于 io::Write

现在 API 的用户可以将数据收集到 String 中,提供自己的 fmt::Write 实现,等等。你会遇到的问题是,如果你想将此函数的输出发送到 stdout:没有内置的方法可以做到这一点!这正是这个 crate 出现的原因,它提供了一个适配器,因此你可以编写以下内容

foo(&mut io::stdout().write_adapter());

无运行时依赖