#future #cancel #task #abort #no-std

no-std kyansel

可取消的未来。提供一个未来作为参数,如果提供的未来先解决,则当前未来将取消。

5个不稳定版本

0.3.1 2019年11月22日
0.3.0 2019年11月22日
0.2.1 2019年11月19日
0.2.0 2019年11月19日
0.1.0 2019年11月18日

异步类别中排名第1794

Apache-2.0/MIT

16KB
186

关于

简单的crate,提供了一个组合未来,当传递的未来完成时将取消。

许可证

许可方式任选其一


lib.rs:

此库为未来添加了一个组合器,使得一个未来在另一个成功完成时可以被取消。

可以使用 futures_01 功能启用对 futures 0.1 的支持

示例

 use kyansel::cancellable;

 let (tx, rx) = oneshot::channel::<()>();
    
 //simulate a long future
 let future =
     delay(tokio::clock::now() + std::time::Duration::from_secs(1));

 //make it cancellable
 let cancellable = cancellable(future, rx);

 //create the future that will trigger the cancellation
 let canceller = ready(tx.send(()));

 //run them at the same time (example)
 let pair = join(cancellable, canceller);

 //we `.await` the join, dropping the result of the canceller since we don't care
 let (cancellable_result, _) = pair.await;

 //the return is of type CancelledResult<(), Result<(), RecvError>>
 let cancellable_result = cancellable_result.cancelled().unwrap().unwrap();

 assert_eq!((), cancellable_result);
#

依赖

~14KB