-
Couldn't load subscription status.
- Fork 13.9k
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:
newis_unspecified
Methods unstable const by PR#76142 (const_ipv4):
octetsis_loopbackis_privateis_link_localis_shared(unstable)is_ietf_protocol_assignment(unstable)is_benchmarking(unstable)is_multicastis_documentationis_global(unstable)is_reserved(unstable)is_broadcastto_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:
segmentsis_unspecifiedis_loopbackis_global(unstable)is_unique_local(unstable)is_unicast_link_local_strict(unstable)is_documentation(unstable)multicast_scope(unstable)is_multicastto_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_ip4is_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_loopbackis_multicastis_unspecified