#error #timer #utilities #optional #tracing #logging #color-eyre

burntnail-utils

错误和缓存器/计时器/宏的一些实用工具集

10 个版本 (4 个破坏性版本)

0.7.1 2022年11月20日
0.7.0 2022年11月20日
0.6.2 2022年11月1日
0.6.1 2022年10月31日
0.3.0 2022年10月26日

#2036 in Rust 模式

36 每月下载量

MIT 许可证

58KB
1K SLoC

BurntNail Utils

嘿!你找到了我用于 Rust 的一般实用工具。现在有很多,包括可选的 tracing 支持,并提供标准 printlneprintln 作为后备。

错误扩展

主要设计为与 anyhowcolor-eyre 一起使用,因此包括将 OptionPosionErr 转换为 Anyhow 错误的方法。

还包括一个用于快速记录错误的 trait,作为 unwrapexpect 的替代方案。

基于时间的结构

作用域计时器

包括一个 ScopedTimer,其中你创建一个计时器,然后在 Drop 上,它将打印出所花费的时间和一条消息。

还有一个 ThreadSafeScopedToListTimer,它将结果发送到包含 Duration 结构的 MemoryCacher

在间隔上执行操作

一个有用的结构来保存计时器,并且每次你想在间隔上执行一个操作时,你都会检查它,然后它会告诉你。之后,你可以手动更新它,或者使用一个守卫。

内存缓存器

基本上,一个固定大小的循环队列。曾经使用 MaybeUninit 进行不安全使用,但后来我发现,当它背后是一个正常的 Vec 时,它大约快了 10 倍。

坐标

一个用于坐标的结构,具有泛型内部类型和最大宽度和高度。

或者

一个基本的 Either 枚举类型,具有 Left、Right 和一些转换方法。

Piston 缓存器

一个根据文件路径缓存 piston2d 图像的结构。

多维数组

目前仅包含一个二维数组,可以使用原生坐标或 (usize, usize) 进行索引。

待办事项

  • ThreadSafeScopedToListTimer 修改为使用可以推送的不同内容(可能需要新的特质?)
  • 重命名一些内容以使其更清晰
  • 文档测试和更多示例

依赖项

~0.5–11MB
~77K SLoC