pub trait DatagramSocketMapSpec<I: Ip, D: DeviceIdentifier, A: SocketMapAddrSpec>:
SocketMapStateSpec<ListenerId = Self::BoundSocketId, ConnId = Self::BoundSocketId>
+ SocketMapConflictPolicy<ListenerAddr<ListenerIpAddr<I::Addr, A::LocalIdentifier>, D>, <Self as SocketMapStateSpec>::ListenerSharingState, I, D, A>
+ SocketMapConflictPolicy<ConnAddr<ConnIpAddr<I::Addr, A::LocalIdentifier, A::RemoteIdentifier>, D>, <Self as SocketMapStateSpec>::ConnSharingState, I, D, A> {
type BoundSocketId: Clone + Debug;
}
Expand description
Types and behavior for datagram socket demultiplexing map.
I: Ip
describes the type of packets that can be received by sockets in
the map.
Required Associated Types§
Sourcetype BoundSocketId: Clone + Debug
type BoundSocketId: Clone + Debug
The type of IDs stored in a BoundSocketMap
for which this is the
specification.
This can be the same as DatagramSocketSpec::SocketId
but doesn’t
have to be. In the case of
dual-stack sockets, for example, an IPv4 socket will have type
DatagramSocketSpec::SocketId<Ipv4>
but the IPv4 demultiplexing map
might have BoundSocketId=Either<DatagramSocketSpec::SocketId<Ipv4>, DatagramSocketSpec::SocketId<Ipv6>>
to allow looking up IPv6 sockets
when receiving IPv4 packets.
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.