use std::net::SocketAddr; //use hyper::server::conn::AddrStream; use axum::extract::connect_info::Connected; use axum::serve::IncomingStream; #[derive(Clone, Debug)] pub struct AppConnectInfo { pub remote_addr: SocketAddr, // pub local_addr: SocketAddr, } impl Connected> for AppConnectInfo { fn connect_info(target: IncomingStream<'_>) -> Self { AppConnectInfo { remote_addr: target.remote_addr(), // local_addr: target.local_addr().unwrap_or(target.remote_addr()), } } } // impl Connected<&AddrStream> for AppConnectInfo { // fn connect_info(target: &AddrStream) -> Self { impl Connected for AppConnectInfo { fn connect_info(target: SocketAddr) -> Self { AppConnectInfo { remote_addr: target.to_owned(), // local_addr: target.to_owned(), } } }