#[derive(GenericOverIp)]
{
// Attributes available to this derive:
#[generic_over_ip]
}
Expand description
Implements a derive macro for [net_types::ip::GenericOverIp].
Requires that #[derive(GenericOverIp)] invocations explicitly specify
which type parameter is the generic-over-ip one with the
#[generic_over_ip] attribute, rather than inferring it from the bounds
on the struct generics.
Consider the following example:
#[derive(GenericOverIp)]
#[generic_over_ip(<ARGUMENTS EXPLAINED BELOW>)]
struct Foo<T>(T);#[generic_over_ip(T, Ip)] specifies that the GenericOverIp impl
should be written treating T as an Ip implementor (either Ipv4 or
Ipv6).
#[generic_over_ip(T, IpAddress)] specifies that T is an IpAddress
implementor (Ipv4Addr or Ipv6Addr).
#[generic_over_ip(T, GenericOverIp)] specifies that T implements
GenericOverIp<I> for all I: Ip. (Notably, we’d like to use this case
for the Ip and IpAddress cases above, but we cannot due to issues
with conflicting blanket impls.)
#[generic_over_ip()] specifies that Foo is IP-invariant.