@@ -325,19 +325,32 @@ extension_trait! {
325
325
#
326
326
use async_std::prelude::*;
327
327
use async_std::stream;
328
- use std::time::Duration;
328
+ use std::time::{ Duration, Instant} ;
329
329
330
- // emit value every 1 second
331
- let s = stream::interval(Duration::from_millis(5)).enumerate().take(3);
330
+ // emit value every 5 milliseconds
331
+ let s = stream::interval(Duration::from_millis(5))
332
+ .enumerate()
333
+ .take(3);
332
334
333
- // throttle for 2 seconds
335
+ // throttle for 10 milliseconds
334
336
let mut s = s.throttle(Duration::from_millis(10));
335
337
338
+ let start = Instant::now();
336
339
assert_eq!(s.next().await, Some((0, ())));
340
+ let duration_ms = start.elapsed().as_millis();
341
+ assert!(duration_ms >= 5 && duration_ms < 15);
342
+
337
343
assert_eq!(s.next().await, Some((1, ())));
344
+ let duration_ms = start.elapsed().as_millis();
345
+ assert!(duration_ms >= 15 && duration_ms < 25);
346
+
338
347
assert_eq!(s.next().await, Some((2, ())));
348
+ let duration_ms = start.elapsed().as_millis();
349
+ assert!(duration_ms >= 25 && duration_ms < 35);
350
+
339
351
assert_eq!(s.next().await, None);
340
- // with a pause of 2 seconds between each print
352
+ let duration_ms = start.elapsed().as_millis();
353
+ assert!(duration_ms >= 35 && duration_ms < 45);
341
354
#
342
355
# }) }
343
356
```
0 commit comments