diff --git a/examples/graceful_shutdown/Cargo.toml b/examples/graceful-shutdown/Cargo.toml
similarity index 100%
rename from examples/graceful_shutdown/Cargo.toml
rename to examples/graceful-shutdown/Cargo.toml
diff --git a/examples/graceful_shutdown/src/main.rs b/examples/graceful-shutdown/src/main.rs
similarity index 56%
rename from examples/graceful_shutdown/src/main.rs
rename to examples/graceful-shutdown/src/main.rs
index dd20f19c..3704889a 100644
--- a/examples/graceful_shutdown/src/main.rs
+++ b/examples/graceful-shutdown/src/main.rs
@@ -7,6 +7,7 @@
use axum::{response::Html, routing::get, Router};
use std::net::SocketAddr;
+use tokio::signal;
#[tokio::main]
async fn main() {
@@ -27,29 +28,28 @@ async fn handler() -> Html<&'static str> {
Html("
Hello, World!
")
}
-#[cfg(unix)]
-pub async fn shutdown_signal() {
- use std::io;
- use tokio::signal::unix::SignalKind;
+async fn shutdown_signal() {
+ let ctrl_c = async {
+ signal::ctrl_c()
+ .await
+ .expect("failed to install Ctrl+C handler");
+ };
- async fn terminate() -> io::Result<()> {
- tokio::signal::unix::signal(SignalKind::terminate())?
+ #[cfg(unix)]
+ let terminate = async {
+ signal::unix::signal(signal::unix::SignalKind::terminate())
+ .expect("failed to install signal handler")
.recv()
.await;
- Ok(())
- }
+ };
+
+ #[cfg(not(unix))]
+ let terminate = std::future::pending::<()>();
tokio::select! {
- _ = terminate() => {},
- _ = tokio::signal::ctrl_c() => {},
+ _ = ctrl_c => {},
+ _ = terminate => {},
}
- println!("signal received, starting graceful shutdown")
-}
-#[cfg(windows)]
-pub async fn shutdown_signal() {
- tokio::signal::ctrl_c()
- .await
- .expect("faild to install CTRL+C handler");
- println!("signal received, starting graceful shutdown")
+ println!("signal received, starting graceful shutdown");
}