Description
Due to recent stabilizations of const integer arithmetic and const control flow, all methods of types std::net::IpAddr
, Ipv4Addr
, and Ipv6Addr
can be made const. This issue provides an overview of all methods and steps that need to be taken:
Ipv4Addr
Methods already stable const:
new
is_unspecified
Methods unstable const by PR#76142 (const_ipv4
):
octets
is_loopback
is_private
is_link_local
is_shared
(unstable)is_ietf_protocol_assignment
(unstable)is_benchmarking
(unstable)is_multicast
is_documentation
is_global
(unstable)is_reserved
(unstable)is_broadcast
to_ipv6_compatible
(deprecated?)to_ipv6_mapped
None of these methods depends on an unstable feature, and could all thus be made stable const.
Ipv6Addr
Methods already stable const:
new
(uses#[allow_internal_unstable(const_fn_transmute)]
)octets
Ipv6Addr::segments
has been made unstable const in PR#76206 (const_ipv6
), together with all dependent methods:
segments
is_unspecified
is_loopback
is_global
(unstable)is_unique_local
(unstable)is_unicast_link_local_strict
(unstable)is_documentation
(unstable)multicast_scope
(unstable)is_multicast
to_ipv4_mapped
(unstable)to_ipv4
All of these methods depend on segments
, and thus upon the unstable feature const_fn_transmute
, however the transmute is only used for better code generation, the operations could be rewritten equivalently using stable const code.
IpAddr
The following methods are stable const:
is_ip4
is_ipv6
Implemented in PR#76226.
With the relevant methods of Ipv4Addr
and Ipv6Addr
made const, the following were also made unstable const in PR#76304:
is_documentation
(unstable)is_global
(unstable)is_loopback
is_multicast
is_unspecified