pub trait ListenerExt: Sized + Listener {
// 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§
Sourcefn tap_io<F>(self, tap_fn: F) -> TapIo<Self, F>
fn tap_io<F>(self, tap_fn: F) -> TapIo<Self, F>
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.