#write #read-line #traits #prelude #stdin #testing #ezio

已删除 ez-ezio

ezio 的内部分支。不稳定。

0.0.6 2022年2月15日
0.0.5 2022年2月15日
0.0.0-- 2022年7月30日

#62 in #read-line


用于 ez

Apache-2.0

32KB
563

ez-ezio

这是一个测试 ez 包中宏的练习,以及可能对 ezio 进行的一些更改。不应该直接使用此代码。如果有任何好的想法,我们会考虑将它们合并到上游代码中。

上游更改

  • 特质实现被封装在固有方法中,因此不需要导入特质,并且不再包含在预定义中。
  • .write 方法重命名为 .write_str 以消除歧义,以防同时导入两个 write 特质。
  • 大多数恐慌方法都添加了可失败的 try_ 替代方案(尽管在大多数情况下,我们只是抛出一个 eyre::Report 而不是更具体的内容)。

ezio - 一个简单的 IO 包

ezio 为读取和写入文件和 stdio 提供了一个易于使用的 IO API。ezio 包含生成随机数和其他 IO 功能的实用程序。性能和惯用错误处理不是目标,因此 ezio 可能不适合生产使用。它更适合教育、实验和原型设计。

ezio 包装了标准库的 IO API 和其他成熟的包,并设计为与它们交互,因此 ezio 应该与大多数上游库兼容。

示例

use ezio::prelude::*;

fn main() {
    // Read a line from stdin
    let _ = stdio::read_line();

    // Iterate lines in a file
    for line in file::reader("path/to/file.txt") {
        // ...
    }

    // Read a whole file
    let _ = file::read("path/to/file.txt");

    // Write to a file
    file::write("path/to/file.txt", "Some text");

    // Write multiple things to a file
    let mut w = file::writer("path/to/file.txt");
    w.write("Some text\n");
    w.write("Some more text");

    // Generates a random u32
    let _ = random::u32();
}

设计原则

(ezio 正在开发中,因此这些可能仍然具有期望性)

  • 易于使用!
  • 易于导入 - 提供预定义,大多数用户将不需要其他内容
  • 简单的模块层次结构
  • 默认基于字符串,而非基于字节
  • 喜欢恐慌:默认恐慌,当真正需要错误时,使用 try_ 函数版本
  • 喜欢分配:返回字符串等,而不是接收缓冲区
  • 与 std IO 兼容和可互操作,因此程序可以逐步从 ezio 迁移到 std::io
  • 仅仅因为我们正在做简单的 IO,并不意味着程序的其余部分也是简单的。因此
    • 应该是惯用的 Rust
    • 应支持泛型和特质对象等

依赖关系

~495KB