0.0.6 |
|
---|---|
0.0.5 |
|
0.0.0-- |
|
#62 in #read-line
用于 ez
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