#[cfg(unix)] pub async fn wait_for_shutdown_signal() -> Result<(), std::io::Error> { use tokio::signal::unix::{signal, SignalKind}; let mut terminate = signal(SignalKind::terminate())?; tokio::select! { _ = tokio::signal::ctrl_c() => Ok(()), _ = terminate.recv() => Ok(()), } } #[cfg(not(unix))] pub async fn wait_for_shutdown_signal() -> Result<(), std::io::Error> { tokio::signal::ctrl_c().await }