Remove io::Result from serve output type

This commit is contained in:
Jonas Platte 2025-04-26 22:09:00 +02:00
parent ffea2bcba5
commit a697d5badd
No known key found for this signature in database
GPG Key ID: 7D261D771D915378
56 changed files with 69 additions and 88 deletions

View File

@ -438,7 +438,7 @@ pub fn derive_from_request_parts(item: TokenStream) -> TokenStream {
/// let app = Router::new().route("/", get(handler));
///
/// let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
/// axum::serve(listener, app).await.unwrap();
/// axum::serve(listener, app).await;
/// }
///
/// fn handler() -> &'static str {
@ -458,7 +458,7 @@ pub fn derive_from_request_parts(item: TokenStream) -> TokenStream {
/// # let app = Router::new().route("/", get(handler));
/// #
/// # let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
/// # axum::serve(listener, app).await.unwrap();
/// # axum::serve(listener, app).await;
/// # }
/// #
/// #[debug_handler]
@ -485,7 +485,7 @@ pub fn derive_from_request_parts(item: TokenStream) -> TokenStream {
/// let app = Router::new().route("/", get(handler));
///
/// let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
/// axum::serve(listener, app).await.unwrap();
/// axum::serve(listener, app).await;
/// }
///
/// #[debug_handler]
@ -607,7 +607,7 @@ pub fn debug_handler(_attr: TokenStream, input: TokenStream) -> TokenStream {
/// .layer(middleware::from_fn(my_middleware));
///
/// let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
/// axum::serve(listener, app).await.unwrap();
/// axum::serve(listener, app).await;
/// }
///
/// // if this wasn't a valid middleware function #[debug_middleware] would

View File

@ -47,7 +47,7 @@ async fn main() {
// run our app with hyper, listening globally on port 3000
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
// basic handler that responds with a static string

View File

@ -164,8 +164,7 @@ impl BenchmarkBuilder {
let addr = listener.local_addr().unwrap();
std::thread::spawn(move || {
rt.block_on(axum::serve(listener, app).into_future())
.unwrap();
rt.block_on(axum::serve(listener, app).into_future());
});
let mut cmd = Command::new("rewrk");

View File

@ -43,7 +43,7 @@ let app = Router::new().fallback(handler);
# async {
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
# };
```

View File

@ -179,7 +179,7 @@ let app = routes(AppState {});
// but `app` is a `Router<AppState>`
# async {
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
# };
```
@ -202,7 +202,7 @@ let app = routes(AppState {});
// We can now call `Router::into_make_service`
# async {
let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
# };
```

View File

@ -254,8 +254,7 @@ mod tests {
listener,
app.into_make_service_with_connect_info::<SocketAddr>(),
)
.await
.unwrap();
.await;
});
rx.await.unwrap();
@ -296,8 +295,7 @@ mod tests {
listener,
app.into_make_service_with_connect_info::<MyConnectInfo>(),
)
.await
.unwrap();
.await;
});
rx.await.unwrap();
@ -343,8 +341,7 @@ mod tests {
listener,
app.into_make_service_with_connect_info::<SocketAddr>(),
)
.await
.unwrap();
.await;
});
let client = reqwest::Client::new();

View File

@ -37,7 +37,7 @@
//!
//! // run our app with hyper, listening globally on port 3000
//! let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
//! axum::serve(listener, app).await.unwrap();
//! axum::serve(listener, app).await;
//! }
//! ```
//!

View File

@ -1451,7 +1451,7 @@ mod tests {
);
let listener = tokio::net::TcpListener::bind("0.0.0.0:0").await.unwrap();
crate::serve(listener, app).await.unwrap();
crate::serve(listener, app).await;
}
#[crate::test]

View File

@ -517,7 +517,7 @@ impl Router {
///
/// # async {
/// let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
/// axum::serve(listener, app).await.unwrap();
/// axum::serve(listener, app).await;
/// # };
/// ```
///

View File

@ -224,7 +224,7 @@ where
S: Service<Request, Response = Response, Error = Infallible> + Clone + Send + 'static,
S::Future: Send,
{
type Output = io::Result<()>;
type Output = ();
type IntoFuture = private::ServeFuture;
fn into_future(self) -> Self::IntoFuture {
@ -339,14 +339,11 @@ where
S::Future: Send,
F: Future<Output = ()> + Send + 'static,
{
type Output = io::Result<()>;
type Output = ();
type IntoFuture = private::ServeFuture;
fn into_future(self) -> Self::IntoFuture {
private::ServeFuture(Box::pin(async move {
self.run().await;
Ok(())
}))
private::ServeFuture(Box::pin(self.run()))
}
}
@ -447,15 +444,14 @@ where
mod private {
use std::{
future::Future,
io,
pin::Pin,
task::{Context, Poll},
};
pub struct ServeFuture(pub(super) futures_util::future::BoxFuture<'static, io::Result<()>>);
pub struct ServeFuture(pub(super) futures_util::future::BoxFuture<'static, ()>);
impl Future for ServeFuture {
type Output = io::Result<()>;
type Output = ();
#[inline]
fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
@ -526,9 +522,7 @@ mod tests {
// router
serve(TcpListener::bind(addr).await.unwrap(), router.clone());
serve(tcp_nodelay_listener().await, router.clone())
.await
.unwrap();
serve(tcp_nodelay_listener().await, router.clone());
#[cfg(unix)]
serve(UnixListener::bind("").unwrap(), router.clone());

View File

@ -20,11 +20,7 @@ where
let addr = listener.local_addr().unwrap();
println!("Listening on {addr}");
tokio::spawn(async move {
serve(listener, Shared::new(svc))
.await
.expect("server error")
});
tokio::spawn(serve(listener, Shared::new(svc)).into_future());
addr
}

View File

@ -19,7 +19,7 @@ async fn main() {
.await
.unwrap();
println!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn handler() -> Result<(), AppError> {

View File

@ -26,7 +26,7 @@ async fn main() {
// run it
println!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn handler() -> Html<&'static str> {

View File

@ -56,7 +56,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn websocket_handler(

View File

@ -23,7 +23,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
fn app() -> Router {

View File

@ -34,7 +34,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
// middleware that shows how to consume the request body upfront

View File

@ -41,7 +41,7 @@ async fn main() {
async fn serve(app: Router, port: u16) {
let addr = SocketAddr::from(([127, 0, 0, 1], port));
let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn html() -> impl IntoResponse {

View File

@ -32,5 +32,5 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}

View File

@ -32,7 +32,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn handler(Path(params): Path<Params>) -> impl IntoResponse {

View File

@ -69,7 +69,7 @@ async fn main() {
let listener = TcpListener::bind("127.0.0.1:3000").await.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
#[derive(Clone)]

View File

@ -77,7 +77,7 @@ async fn main() {
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
tracing::debug!("listening on {addr}");
let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn create_user(

View File

@ -86,7 +86,7 @@ async fn main() {
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
tracing::debug!("listening on {addr}");
let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn create_user(

View File

@ -83,7 +83,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
#[derive(Default, Clone)]

View File

@ -26,7 +26,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
fn app() -> Router {

View File

@ -33,7 +33,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn handler() -> Html<&'static str> {

View File

@ -48,8 +48,7 @@ async fn main() {
// Run the server with graceful shutdown
axum::serve(listener, app)
.with_graceful_shutdown(shutdown_signal())
.await
.unwrap();
.await;
}
async fn shutdown_signal() {

View File

@ -17,7 +17,7 @@ async fn main() {
.await
.unwrap();
println!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app()).await.unwrap();
axum::serve(listener, app()).await;
}
// GET routes will also be called for HEAD requests but will have the response body removed.

View File

@ -16,7 +16,7 @@ async fn main() {
.await
.unwrap();
println!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn handler() -> Html<&'static str> {

View File

@ -73,7 +73,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn protected(claims: Claims) -> Result<String, AuthError> {

View File

@ -78,7 +78,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
type SharedState = Arc<RwLock<AppState>>;

View File

@ -50,7 +50,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("Listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app(client)).await.unwrap();
axum::serve(listener, app(client)).await;
}
// defining routes and state

View File

@ -38,7 +38,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn show_form() -> Html<&'static str> {

View File

@ -69,7 +69,7 @@ async fn main() {
.unwrap()
);
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
#[derive(Clone)]

View File

@ -33,7 +33,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
#[derive(Debug, Serialize, Deserialize)]

View File

@ -35,7 +35,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn print_request_response(

View File

@ -45,7 +45,7 @@ async fn start_main_server() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn start_metrics_server() {
@ -56,7 +56,7 @@ async fn start_metrics_server() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
#[tokio::main]

View File

@ -29,7 +29,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
// basic handler that responds with a static string

View File

@ -72,7 +72,7 @@ async fn main() {
.await
.unwrap();
println!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn handler() -> Html<&'static str> {

View File

@ -47,7 +47,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn stream_reqwest_response(State(client): State<Client>) -> Response {

View File

@ -34,7 +34,7 @@ async fn main() {
.await
.unwrap();
println!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn handler(State(client): State<Client>, mut req: Request) -> Result<Response, StatusCode> {
@ -63,5 +63,5 @@ async fn server() {
.await
.unwrap();
println!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}

View File

@ -20,7 +20,7 @@ async fn main() {
.await
.unwrap();
println!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
fn root() -> Router {

View File

@ -57,7 +57,7 @@ async fn main() {
// run it with hyper
let listener = TcpListener::bind("127.0.0.1:3000").await.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
// we can extract the connection pool with `State`

View File

@ -39,7 +39,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
fn app() -> Router {

View File

@ -43,7 +43,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
// Handler that streams the request body to a file.

View File

@ -44,7 +44,7 @@ async fn main() {
.await
.unwrap();
println!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn handler_home(State(state): State<Arc<AppState>>) -> Result<Html<String>, StatusCode> {

View File

@ -32,7 +32,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
fn app() -> Router {

View File

@ -146,6 +146,5 @@ where
tracing::debug!("listening on {addr}");
axum::serve(listener, redirect.into_make_service())
.with_graceful_shutdown(signal)
.await
.unwrap();
.await;
}

View File

@ -110,7 +110,5 @@ async fn redirect_http_to_https(ports: Ports) {
let addr = SocketAddr::from(([127, 0, 0, 1], ports.http));
let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, redirect.into_make_service())
.await
.unwrap();
axum::serve(listener, redirect.into_make_service()).await;
}

View File

@ -72,7 +72,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
// The query parameters for todos index

View File

@ -44,7 +44,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
type ConnectionPool = Pool<PostgresConnectionManager<NoTls>>;

View File

@ -53,7 +53,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
type ConnectionPool = Pool<RedisConnectionManager>;

View File

@ -87,7 +87,7 @@ async fn main() {
// run it
let listener = TcpListener::bind("127.0.0.1:3000").await.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
async fn handler() -> Html<&'static str> {

View File

@ -52,7 +52,7 @@ mod unix {
.route("/", get(handler))
.into_make_service_with_connect_info::<UdsConnectInfo>();
axum::serve(uds, app).await.unwrap();
axum::serve(uds, app).await;
});
let stream = TokioIo::new(UnixStream::connect(path).await.unwrap());

View File

@ -39,7 +39,7 @@ async fn main() {
// run it
let listener = TcpListener::bind("127.0.0.1:3000").await.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
fn app() -> Router {

View File

@ -32,7 +32,7 @@ async fn main() {
.await
.unwrap();
tracing::debug!("listening on {}", listener.local_addr().unwrap());
axum::serve(listener, app).await.unwrap();
axum::serve(listener, app).await;
}
fn app() -> Router {

View File

@ -73,8 +73,7 @@ async fn main() {
listener,
app.into_make_service_with_connect_info::<SocketAddr>(),
)
.await
.unwrap();
.await;
}
/// The handler for the HTTP request (this gets called when the HTTP request lands at the start