mirror of
https://github.com/tokio-rs/axum.git
synced 2025-01-11 12:31:25 +01:00
Change Connected::connect_info
to return Self
(#396)
I've been thinking that having an associated type probably isn't necessary. I imagine most users are either using `SocketAddr` to the remote connection IP, or writing their own connection struct.
This commit is contained in:
parent
a724af3d0a
commit
9fcc884374
4 changed files with 10 additions and 18 deletions
|
@ -18,11 +18,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
breaking change if you depend on axum with `default_features = false`. ([#286])
|
||||
- **breaking:** Remove `routing::Layered` as it didn't actually do anything and
|
||||
thus wasn't necessary
|
||||
- **breaking:** Change `Connected::connect_info` to return `Self` and remove
|
||||
the associated type `ConnectInfo` ([#396])
|
||||
|
||||
[#339]: https://github.com/tokio-rs/axum/pull/339
|
||||
[#286]: https://github.com/tokio-rs/axum/pull/286
|
||||
[#272]: https://github.com/tokio-rs/axum/pull/272
|
||||
[#378]: https://github.com/tokio-rs/axum/pull/378
|
||||
[#396]: https://github.com/tokio-rs/axum/pull/396
|
||||
|
||||
# 0.2.8 (07. October, 2021)
|
||||
|
||||
|
|
|
@ -156,9 +156,7 @@ struct UdsConnectInfo {
|
|||
}
|
||||
|
||||
impl connect_info::Connected<&UnixStream> for UdsConnectInfo {
|
||||
type ConnectInfo = Self;
|
||||
|
||||
fn connect_info(target: &UnixStream) -> Self::ConnectInfo {
|
||||
fn connect_info(target: &UnixStream) -> Self {
|
||||
let peer_addr = target.peer_addr().unwrap();
|
||||
let peer_cred = target.peer_cred().unwrap();
|
||||
|
||||
|
|
|
@ -65,18 +65,13 @@ where
|
|||
/// See [`Router::into_make_service_with_connect_info`] for more details.
|
||||
///
|
||||
/// [`Router::into_make_service_with_connect_info`]: crate::routing::Router::into_make_service_with_connect_info
|
||||
pub trait Connected<T> {
|
||||
/// The connection information type the IO resources generates.
|
||||
type ConnectInfo: Clone + Send + Sync + 'static;
|
||||
|
||||
pub trait Connected<T>: Clone + Send + Sync + 'static {
|
||||
/// Create type holding information about the connection.
|
||||
fn connect_info(target: T) -> Self::ConnectInfo;
|
||||
fn connect_info(target: T) -> Self;
|
||||
}
|
||||
|
||||
impl Connected<&AddrStream> for SocketAddr {
|
||||
type ConnectInfo = SocketAddr;
|
||||
|
||||
fn connect_info(target: &AddrStream) -> Self::ConnectInfo {
|
||||
fn connect_info(target: &AddrStream) -> Self {
|
||||
target.remote_addr()
|
||||
}
|
||||
}
|
||||
|
@ -86,7 +81,7 @@ where
|
|||
S: Clone,
|
||||
C: Connected<T>,
|
||||
{
|
||||
type Response = AddExtension<S, ConnectInfo<C::ConnectInfo>>;
|
||||
type Response = AddExtension<S, ConnectInfo<C>>;
|
||||
type Error = Infallible;
|
||||
type Future = ResponseFuture<Self::Response>;
|
||||
|
||||
|
@ -177,9 +172,7 @@ mod tests {
|
|||
}
|
||||
|
||||
impl Connected<&AddrStream> for MyConnectInfo {
|
||||
type ConnectInfo = Self;
|
||||
|
||||
fn connect_info(_target: &AddrStream) -> Self::ConnectInfo {
|
||||
fn connect_info(_target: &AddrStream) -> Self {
|
||||
Self {
|
||||
value: "it worked!",
|
||||
}
|
||||
|
|
|
@ -429,9 +429,7 @@ impl<S> Router<S> {
|
|||
/// }
|
||||
///
|
||||
/// impl Connected<&AddrStream> for MyConnectInfo {
|
||||
/// type ConnectInfo = MyConnectInfo;
|
||||
///
|
||||
/// fn connect_info(target: &AddrStream) -> Self::ConnectInfo {
|
||||
/// fn connect_info(target: &AddrStream) -> Self {
|
||||
/// MyConnectInfo {
|
||||
/// // ...
|
||||
/// }
|
||||
|
|
Loading…
Reference in a new issue