File tree Expand file tree Collapse file tree 3 files changed +38
-2
lines changed Expand file tree Collapse file tree 3 files changed +38
-2
lines changed Original file line number Diff line number Diff line change 11[package ]
22name = " stop-token"
3- version = " 0.1.0 "
3+ version = " 0.1.1 "
44authors = [" Aleksey Kladov <aleksey.kladov@gmail.com>" ]
55edition = " 2018"
66license = " MIT OR Apache-2.0"
Original file line number Diff line number Diff line change @@ -101,7 +101,7 @@ pub struct StopToken {
101101
102102impl Default for StopSource {
103103 fn default ( ) -> StopSource {
104- let ( sender, receiver) = channel :: < Never > ( 0 ) ;
104+ let ( sender, receiver) = channel :: < Never > ( 1 ) ;
105105
106106 StopSource {
107107 _chan : sender,
Original file line number Diff line number Diff line change 1+ use std:: time:: Duration ;
2+
3+ use async_std:: { prelude:: * , task, sync:: channel} ;
4+
5+ use stop_token:: StopSource ;
6+
7+ #[ test]
8+ fn smoke ( ) {
9+ task:: block_on ( async {
10+ let ( sender, receiver) = channel :: < i32 > ( 10 ) ;
11+ let stop_source = StopSource :: new ( ) ;
12+ let task = task:: spawn ( {
13+ let stop_token = stop_source. stop_token ( ) ;
14+ let receiver = receiver. clone ( ) ;
15+ async move {
16+ let mut xs = Vec :: new ( ) ;
17+ let mut stream = stop_token. stop_stream ( receiver) ;
18+ while let Some ( x) = stream. next ( ) . await {
19+ xs. push ( x)
20+ }
21+ xs
22+ } } ) ;
23+ sender. send ( 1 ) . await ;
24+ sender. send ( 2 ) . await ;
25+ sender. send ( 3 ) . await ;
26+
27+ task:: sleep ( Duration :: from_millis ( 250 ) ) . await ;
28+ drop ( stop_source) ;
29+ task:: sleep ( Duration :: from_millis ( 250 ) ) . await ;
30+
31+ sender. send ( 4 ) . await ;
32+ sender. send ( 5 ) . await ;
33+ sender. send ( 6 ) . await ;
34+ assert_eq ! ( task. await , vec![ 1 , 2 , 3 ] ) ;
35+ } )
36+ }
You can’t perform that action at this time.
0 commit comments