Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 40d6e2c

Browse files
committedNov 22, 2024
Auto merge of rust-lang#129238 - umgefahren:stabilize-ipv6-unique-local, r=dtolnay
Stabilize `Ipv6Addr::is_unique_local` and `Ipv6Addr::is_unicast_link_local` Make `Ipv6Addr::is_unique_local` and `Ipv6Addr::is_unicast_link_local` stable (+const). Newly stable API: ```rust impl Ipv6Addr { // Newly stable under `ipv6_is_unique_local` const fn is_unique_local(&self) -> bool; // Newly stable under `ipv6_is_unique_local` const fn is_unicast_link_local(&self) -> bool; } ``` These stabilise a subset of the following tracking issue: - rust-lang#27709 I have looked and could not find any issues with `is_unique_local` and `is_unicast_link_local`. There is a well received comment calling for stabilisation of the latter function. Both functions are well defined and consistent with implementations in other languages: - [Go](https://cs.opensource.google/go/go/+/refs/tags/go1.23.0:src/net/netip/netip.go;l=518) - [Python](https://github.com/python/cpython/blob/e9d1bf353c3ccafc0d9b61b1b3688051bc976604/Lib/ipaddress.py#L2319-L2321) - [Ruby (unique local)](https://ruby-doc.org/stdlib-2.5.1/libdoc/ipaddr/rdoc/IPAddr.html#private-3F-source) - [Ruby (unicast link local)](https://ruby-doc.org/stdlib-2.5.1/libdoc/ipaddr/rdoc/IPAddr.html#link_local-3F-source) cc implementor `@little-dude` (I can't find the original PR for `is_unqiue_local`) r? libs-api `@rustbot` label +T-libs-api +needs-fcp
2 parents 3c558bf + c5ed625 commit 40d6e2c

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed
 

‎core/src/net/ip_addr.rs

+4-6
Original file line numberDiff line numberDiff line change
@@ -1594,16 +1594,15 @@ impl Ipv6Addr {
15941594
/// # Examples
15951595
///
15961596
/// ```
1597-
/// #![feature(ip)]
1598-
///
15991597
/// use std::net::Ipv6Addr;
16001598
///
16011599
/// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_unique_local(), false);
16021600
/// assert_eq!(Ipv6Addr::new(0xfc02, 0, 0, 0, 0, 0, 0, 0).is_unique_local(), true);
16031601
/// ```
1604-
#[unstable(feature = "ip", issue = "27709")]
16051602
#[must_use]
16061603
#[inline]
1604+
#[stable(feature = "ipv6_is_unique_local", since = "CURRENT_RUSTC_VERSION")]
1605+
#[rustc_const_stable(feature = "ipv6_is_unique_local", since = "CURRENT_RUSTC_VERSION")]
16071606
pub const fn is_unique_local(&self) -> bool {
16081607
(self.segments()[0] & 0xfe00) == 0xfc00
16091608
}
@@ -1665,8 +1664,6 @@ impl Ipv6Addr {
16651664
/// # Examples
16661665
///
16671666
/// ```
1668-
/// #![feature(ip)]
1669-
///
16701667
/// use std::net::Ipv6Addr;
16711668
///
16721669
/// // The loopback address (`::1`) does not actually have link-local scope.
@@ -1680,9 +1677,10 @@ impl Ipv6Addr {
16801677
/// assert_eq!(Ipv6Addr::new(0xfe80, 0, 0, 1, 0, 0, 0, 0).is_unicast_link_local(), true);
16811678
/// assert_eq!(Ipv6Addr::new(0xfe81, 0, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), true);
16821679
/// ```
1683-
#[unstable(feature = "ip", issue = "27709")]
16841680
#[must_use]
16851681
#[inline]
1682+
#[stable(feature = "ipv6_is_unique_local", since = "CURRENT_RUSTC_VERSION")]
1683+
#[rustc_const_stable(feature = "ipv6_is_unique_local", since = "CURRENT_RUSTC_VERSION")]
16861684
pub const fn is_unicast_link_local(&self) -> bool {
16871685
(self.segments()[0] & 0xffc0) == 0xfe80
16881686
}

0 commit comments

Comments
 (0)
Failed to load comments.