#delay #stream #future #duration #most #recent #wait

debounced

构建延迟 Future 和防抖 Stream 的实用工具,这些工具在给出持续时间后才返回最新项。

2 个不稳定版本

新版本 0.2.0 2024 年 8 月 17 日
0.1.0 2022 年 12 月 4 日

#144异步

Download history 879/week @ 2024-04-30 1773/week @ 2024-05-07 1646/week @ 2024-05-14 1582/week @ 2024-05-21 1382/week @ 2024-05-28 1467/week @ 2024-06-04 1544/week @ 2024-06-11 1231/week @ 2024-06-18 1258/week @ 2024-06-25 1141/week @ 2024-07-02 1347/week @ 2024-07-09 1135/week @ 2024-07-16 1326/week @ 2024-07-23 1029/week @ 2024-07-30 1011/week @ 2024-08-06 1667/week @ 2024-08-13

5,192 每月下载量
i3status-rs 中使用

MIT 许可证

14KB
177

Debounced

构建延迟 Future 和防抖 Stream 的实用工具,这些工具在给出持续时间后才返回最新项。

用法

此 crate 实现的功能相当简单。根据您是想延迟单个 future,还是防抖整个 stream,您应该使用 delayeddebounced

延迟单个值

如果您想延迟单个 future 的解析到一个已知值,您可以使用 delayed

use debounced::delayed;

let delayed = delayed(42, Duration::from_secs(1)).await;
assert_eq!(start.elapsed().as_secs(), 1);
assert_eq!(delayed, 42);

防抖流

如果您想防抖整个 stream,您可以使用 debounced

use debounced::debounced;

let (mut sender, receiver) = futures_channel::mpsc::channel(1024);
let mut debounced = debounced(receiver, Duration::from_secs(1));
sender.send(21).await;
sender.send(42).await;
assert_eq!(debounced.next().await, Some(42));
assert_eq!(start.elapsed().as_secs(), 1);

限制

  • 前置防抖。 此库当前仅实现后置防抖。它不实现前置防抖。

许可证

版权所有 2022 Glacyr B.V.

特此授予任何获得此软件及其相关文档副本(“软件”)的人,免费使用该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许软件的受让人行使上述权利,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些索赔、损害或其他责任是由于合同、侵权或其他方式引起的,无论是由于软件或软件的使用或其它方式。

依赖关系

~0.6–1MB
~19K SLoC