#immediate-mode #lazy-evaluation #tokio #egui #future #primitive #data

lazy_async_promise

使用tokio从future中懒加载数据的原语,适用于即时模式的GUI

8个版本 (4个破坏性更新)

0.5.0 2023年5月29日
0.4.0 2023年3月22日
0.4.0-RC12023年1月12日
0.3.1 2022年11月10日
0.1.2 2022年10月8日

#863 in 算法

Download history 76/week @ 2024-04-22 148/week @ 2024-04-29 100/week @ 2024-05-06 226/week @ 2024-05-13 198/week @ 2024-05-20 256/week @ 2024-05-27 529/week @ 2024-06-03 182/week @ 2024-06-10 183/week @ 2024-06-17 321/week @ 2024-06-24 145/week @ 2024-07-01 74/week @ 2024-07-08 77/week @ 2024-07-15 128/week @ 2024-07-22 132/week @ 2024-07-29 403/week @ 2024-08-05

每月740次下载

MIT授权

50KB
858

lazy_async_promise: 用于管理tokio和egui的简单原语

Documentation CI Coverage Status License

这个crate目前只提供简单的原语,用于使用tokio从主线程获取计算时间

  • LazyVecPromise用于基于向量的存储,可以在任务进行时显示。
  • LazyValuePromise用于单个值future,可以在任务进行时更新。我的使用场景是迭代算法,其中中间结果对于显示是有趣的。

正如其名,这两个都是懒加载的,直到第一次被轮询之前都不会发生任何操作。

对于有或没有值的单个值,有ImmediateValuePromise可以立即触发计算。没有计算过程中的值读取,所以要么完成,要么没有。经过大量使用后,我现在倾向于用ImmediateValuePromise包裹在Option中,用于大多数懒值。特别是当不需要中间值时,这在技术上足够简单,也更简单。此外,从0.4.0版本开始,它现在非常方便使用,请参阅文档中的示例。

此crate的另一个示例使用,一个小的egui/eframe博客阅读器,可以在这里找到

变更日志

0.5.0

  • 修复了与BoxSendError的可见性问题(感谢@aspcartman)
  • 为立即值promise添加了进度跟踪包装器(至少对我来说,使lazyvaluepromise变得过时)
  • 更新了文档

0.4.0:

  • 为懒和立即结构添加了更灵活的API,允许获取值
  • 为基于option的立即值promise的用法添加了更方便的DirectCacheAccess trait
  • 更新了文档

0.3.1:

  • 为懒结构添加了更好的API宏

0.3.0:

  • 删除了into_boxed trait,以支持常规的From trait,这允许在ImmediateValuePromise中直接使用?-操作符
  • LazyVecPromiseLazyValuePromise添加了进度指示器
  • 指示是通过确保值在0.0和1.0之间的Progress强类型完成的
  • 为mac、Windows和Linux添加了持续集成 - 相比Linux,mac OS需要更多的时间来调整测试时间。

依赖项

约2-3MB
约47K SLoC