Crates.io | scuffle-signal |
lib.rs | scuffle-signal |
version | 0.3.3 |
created_at | 2024-11-28 16:47:16.153904+00 |
updated_at | 2025-05-30 23:10:21.353233+00 |
description | Ergonomic async signal handling. |
homepage | |
repository | https://github.com/scufflecloud/scuffle |
max_upload_size | |
id | 1464770 |
size | 61,108 |
[!WARNING]
This crate is under active development and may not be stable.
A crate designed to provide a more user friendly interface to
tokio::signal
.
See the changelog for a full release history.
bootstrap
— Enables scuffle-bootstrap supportdocs
— Enables changelog and documentation of feature flagsThe tokio::signal
module provides a way for us to wait for a signal to be
received in a non-blocking way. This crate extends that with a more helpful
interface allowing the ability to listen to multiple signals concurrently.
use scuffle_signal::SignalHandler;
use tokio::signal::unix::SignalKind;
let mut handler = SignalHandler::new()
.with_signal(SignalKind::interrupt())
.with_signal(SignalKind::terminate());
// Wait for a signal to be received
let signal = handler.await;
// Handle the signal
let interrupt = SignalKind::interrupt();
let terminate = SignalKind::terminate();
match signal {
interrupt => {
// Handle SIGINT
println!("received SIGINT");
},
terminate => {
// Handle SIGTERM
println!("received SIGTERM");
},
}
This project is licensed under the MIT or Apache-2.0 license. You can choose between one of them if you use this work.
SPDX-License-Identifier: MIT OR Apache-2.0