#shutdown #callback #termination #run-time

无std simple_on_shutdown

该crate包含一个方便的宏,用于指定在关闭时的回调(=在程序退出时(优雅地)应该运行的代码)。它非常简单且精简。

13个版本 (1个稳定版本)

1.0.0 2021年5月19日
0.3.0 2020年12月21日
0.2.2 2020年12月21日
0.1.8 2020年12月15日

#173 in 无标准库

每月24次下载

MIT许可证

17KB
89

simple_on_shutdown

该crate包含一个方便的宏,用于指定在程序退出时(优雅地)应该运行的代码的回调,称为on_shutdown!。它接受程序退出时应执行的代码。有关更多信息,请参阅https://docs.rs/simple_on_shutdown

适用于"无法控制的运行时",例如,例如actix-web框架不允许您自己指定关闭回调。在这种情况下,我的宏可能是一个更好的选择。

使用方法

use simple_on_shutdown::on_shutdown;

fn main() {
    // macro can take: direct expression
    on_shutdown!(println!("shut down with success"));
    // closure expression
    on_shutdown!(|| println!("shut down with success"));
    // move closure expression
    on_shutdown!(move || println!("shut down with success"));
    // block
    on_shutdown!({ println!("shut down with success") });
    // identifier
    let identifier = || println!("shut down with success");
    on_shutdown!(identifier);
}

示例

请参阅"examples/"目录中的示例!

⚠ 限制 ⚠

  • 无法保证在“非常规”关闭场景中执行,如CTRL+C / SIGINT / SIGTERM
  • 您的应用程序必须正确处理SIGINT/SIGTERM(以及其他信号),以允许优雅地“非常规”关闭(例如,Actix web框架就是这样做的)
    • 即,如果您不处理信号CTRL+C将立即关闭您的应用程序
  • 即使在那种情况下:也无法保证在每次操作系统中在应用程序(强制)被终止后都会给予应用程序更多时间
  • 这种行为在Windows和UNIX之间略有不同。有关更多详细信息,请参阅example/src/bin/simple_example_ctrl_c_signal

无运行时依赖项