axum::serve

Trait ListenerExt

Source
pub trait ListenerExt: Listener + Sized {
    // Provided method
    fn tap_io<F>(self, tap_fn: F) -> TapIo<Self, F>
       where F: FnMut(&mut Self::Io) + Send + 'static { ... }
}
Expand description

Extensions to Listener.

Provided Methods§

Source

fn tap_io<F>(self, tap_fn: F) -> TapIo<Self, F>
where F: FnMut(&mut Self::Io) + Send + 'static,

Run a mutable closure on every accepted Io.

§Example
use axum::{Router, routing::get, serve::ListenerExt};
use tracing::trace;

let router = Router::new().route("/", get(|| async { "Hello, World!" }));

let listener = tokio::net::TcpListener::bind("0.0.0.0:3000")
    .await
    .unwrap()
    .tap_io(|tcp_stream| {
        if let Err(err) = tcp_stream.set_nodelay(true) {
            trace!("failed to set TCP_NODELAY on incoming connection: {err:#}");
        }
    });
axum::serve(listener, router).await.unwrap();

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§