#log-error #log #tracing #macro #logging

skip_error

帮助在迭代中跳过并记录 Result::Error 的实用程序

7 个稳定版本

3.1.1 2021 年 9 月 21 日
3.0.0 2021 年 9 月 6 日
2.0.0 2021 年 7 月 19 日
1.1.0 2021 年 5 月 12 日
1.0.0 2020 年 3 月 23 日

#613 in 调试

Download history 317/week @ 2024-03-14 300/week @ 2024-03-21 290/week @ 2024-03-28 347/week @ 2024-04-04 287/week @ 2024-04-11 329/week @ 2024-04-18 252/week @ 2024-04-25 368/week @ 2024-05-02 241/week @ 2024-05-09 367/week @ 2024-05-16 320/week @ 2024-05-23 536/week @ 2024-05-30 408/week @ 2024-06-06 399/week @ 2024-06-13 517/week @ 2024-06-20 527/week @ 2024-06-27

1,983 每月下载量
4 个库中使用了(直接使用 3 个)

MIT 许可证

19KB
283

GitHub Action Status Latest Version

skip_error

skip_error 提供了一个宏,帮助忽略循环中可能发生的 Error。有关更多信息,请参阅 文档

Rust 版本要求

skip_error 3.0.0 需要 Rustc 版本 1.54 或更高


lib.rs:

此库提供了一个宏,帮助在循环中跳过一个错误,可能还会记录它。

例如,假设您有如下代码。

for string_number in &["1", "2", "three", "4"] {
  let number: u32 = match string_number.parse() {
    Ok(n) => n,
    Err(e) => continue,
  };
}

然后您可以使用宏 skip_error! 来这样写。

for string_number in &["1", "2", "three", "4"] {
  let number: u32 = skip_error!(string_number.parse());
}

或者更好的是,使用扩展了 IteratorSkipError 特性,并执行以下操作(本质上等同于 [Iterator::flatten()],但请参见下面的日志功能)。

use skip_error::SkipError;
let numbers: Vec<u32> = ["1", "2", "three", "4"]
  .into_iter()
  .map(|string_number| string_number.parse())
  .skip_error()
  .collect();

功能

  • log: 使用标准 std::log 宏输出日志消息。默认禁用。
  • tracing: 使用 tracing::trace 宏输出跟踪信息。默认禁用。如果同时启用了 logtracing,则由于 tracing 配置在兼容模式下与标准 log,将忽略 log

依赖

~105KB