第一次实现 _grrs_

未匹配的标注

在上一章命令行参数之后,我们有了输入数据,可以编写实际的工具了。我们的 "main" 函数现在只包括一下这行:

let args = Cli::from_args();

先从打开我们拿到的文件开始。

let content = std::fs::read_to_string(&args.path)
    .expect("could not read file");

补充:

看到这个 expect 方法了么?这是个快捷的退出函数,当无法读取值(该情况下为输入文件)时,使得程序立即退出。它并非完美,在下一章 更好的错误报告 中,我们将探讨如何改善。

现在,让我们遍历行并打印包含模式的每一行:

for line in content.lines() {
    if line.contains(&args.pattern) {
        println!("{}", line);
    }
}

尝试一下: cargo run -- main src/main.rs 现在应该能正常工作了。

读者练习:
这并非最佳实现:它会将整个文件读入内存——无论文件多大。试找到一种方法优化它!(一种思路是使用 BufReader 而非 read_to_string()。)

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/rust-cla-2020/f...

译文地址:https://learnku.com/docs/rust-cla-2020/f...

上一篇 下一篇
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~