#![deny(clippy::all, clippy::pedantic, clippy::nursery, clippy::cargo)]
#![deny(warnings)]
pub async fn shutdown_signal() {
#[cfg(target_family = "unix")]
{
use std::pin::pin;
use tokio::signal::unix::{signal, SignalKind};
let mut interrupt = signal(SignalKind::interrupt()).expect("Failed to listen to sigint");
let mut quit = signal(SignalKind::quit()).expect("Failed to listen to sigquit");
let mut terminate = signal(SignalKind::terminate()).expect("Failed to listen to sigterm");
futures_util::future::select_all([
pin!(interrupt.recv()),
pin!(quit.recv()),
pin!(terminate.recv()),
])
.await;
}
#[cfg(not(target_family = "unix"))]
tokio::signal::ctrl_c()
.await
.expect("Failed to listen to ctrl+c");
}