#duration #compile-time #instant #const #time

no-std fugit

以易用性和性能为先的时间库,用于嵌入式目标

11个版本

0.3.7 2023年6月6日
0.3.6 2022年6月23日
0.3.5 2022年2月14日
0.3.3 2021年12月25日
0.1.4 2021年10月31日

#44 in 嵌入式开发

Download history 11457/week @ 2024-05-04 9194/week @ 2024-05-11 12985/week @ 2024-05-18 14191/week @ 2024-05-25 12014/week @ 2024-06-01 12236/week @ 2024-06-08 12894/week @ 2024-06-15 14430/week @ 2024-06-22 16528/week @ 2024-06-29 13473/week @ 2024-07-06 16842/week @ 2024-07-13 13812/week @ 2024-07-20 14818/week @ 2024-07-27 15318/week @ 2024-08-03 18137/week @ 2024-08-10 17201/week @ 2024-08-17

67,844 每月下载量
用于 220 包(97个直接使用)

MIT/Apache

150KB
2.5K SLoC

fugit

fugit 提供了一个全面的 DurationInstant 库,用于在嵌入式系统中处理时间,并在编译时尽可能完成所有操作。

这个库受到了 C++ 中 std::chronoDuration 的强烈启发,该库在编译时尽可能完成所有操作。

目标

  • no_std 库,以用户友好性和性能为目标
    • 所有方法都是 const fn(即非特质方法)
    • 不使用特质,所有具体类型都使用以实现最大化的 const-ification
    • 支持不同基数和后备存储之间的操作,而不是实现自定义特质
    • 确保生成所有用于比较或更改时间基的常量都是在编译时生成的
  • 支持 u32u64 后备存储,在MCU上高效地降低指令
    • 在Cortex-M3及以上:除非在 u64 上更改基数,否则不会为 u32u64 拖入软实现
    • u32u64 上的比较不使用除法,仅更改基数,所有常量都是在编译时计算的
  • 基数的选择发生在编译时
    • 一个常见问题是运行时更改基数使我们失去了许多优化机会,但由于没有特质和简写,我们可以在编译时选择正确的基数。

依赖项

~170KB