summer 0.5.1

Rust microservice framework like spring boot in java
Documentation
/// shutdown signal
pub async fn shutdown_signal(plugin_name: &'static str) {
    let ctrl_c = async {
        tokio::signal::ctrl_c()
            .await
            .expect("failed to install Ctrl+C handler");
    };

    #[cfg(unix)]
    let terminate = async {
        tokio::signal::unix::signal(tokio::signal::unix::SignalKind::terminate())
            .expect("failed to install signal handler")
            .recv()
            .await;
    };

    #[cfg(not(unix))]
    let terminate = std::future::pending::<()>();

    tokio::select! {
        _ = ctrl_c => {
            tracing::info!("Received Ctrl+C signal, waiting for {plugin_name} shutdown")
        },
        _ = terminate => {
            tracing::info!("Received kill signal, waiting for {plugin_name} shutdown")
        },
    }
}