#signal #once #channel #async #fuse

fuze

一种等待单个信号的机制,可以在任何时间进行检查

3 个稳定版本

3.0.0 2021年7月22日
2.0.0 2021年7月19日
1.0.0 2021年7月15日

#962并发

Apache-2.0 OR MIT

10KB
86

熔断器

一种可以在任何时间进行检查的等待单个信号的机制。

熔断器可以同步检查,并且只有在被燃烧后才会显示为已燃烧。它可以在未燃烧时被挂起,并且可以在任何时间进行克隆和使用,无需 mut

适用于退出条件和一次性的无负载通道。

use fuze::Fuze;
use async_std::task;
use std::time::Duration;

let f1 = Fuze::new();

let f2 = f1.clone();
task::block_on(async move {
   println!("Halo!");

  	task::spawn(async move {
  		task::sleep(Duration::from_secs(1)).await;
  		f3.burn();
  	});

  	f2.wait().await;
   println!("Adios!");
});

lib.rs:

熔断器是可以在任何时间进行检查的等待单个信号的机制。

此 crate 包含 Async-std(默认)和 Tokio 实现

Async-std

fuze = "3.0.0"

Tokio

fuze = { version = "3.0.0", default-features = false, features = ["tokio"] }

两种实现可以共存(同时启用两个功能),API 是相同的,但顶层重导出将优先选择 async-std 版本。禁用两个功能将无法编译。

依赖关系

~5–18MB
~196K SLoC