#graceful-shutdown #shutdown #graceful #shutdown-signal #signal #cancel

取消令牌

Rust对C#的CancellationToken API的实现

2个版本

0.1.1 2024年7月23日
0.1.0 2023年8月20日

#396 in 异步

Download history 113/week @ 2024-07-20 22/week @ 2024-07-27

每月135次下载

MIT/Apache

18KB
341 代码行

cancellation-token-rs

Crates.io Docs.rs Actions Status

C#的CancellationToken API的Rust实现。

示例

use cancellation_token::{CancellationToken, CancellationTokenSource, MayBeCanceled};

fn cancelable_function(ct: &CancellationToken) -> MayBeCanceled<u32> {
    for _ in 0..100 {
        ct.canceled()?; // Return from this function if canceled
        heavy_work();
    }
    Ok(100)
}
fn heavy_work() { }

fn main() {
    let cts = CancellationTokenSource::new();
    std::thread::scope(|s| {
        s.spawn(|| {
            std::thread::sleep(std::time::Duration::from_secs(2));
            cts.cancel();
        });
        if cancelable_function(&cts.token()).is_err() {
            println!("canceled");
        }
    });
}

许可证

本项目采用Apache-2.0/MIT双重许可。有关详细信息,请参阅两个LICENSE-*文件。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的任何有意提交以包含在作品中的贡献,均将按上述方式双重许可,不附加任何额外条款或条件。

依赖项

~335–800KB
~18K SLoC