@@ -26,7 +26,8 @@ use crate::ops::{BitAnd, BitAndAssign, BitOr, BitOrAssign, Not};
26
26
/// ```
27
27
#[ rustc_diagnostic_item = "IpAddr" ]
28
28
#[ stable( feature = "ip_addr" , since = "1.7.0" ) ]
29
- #[ derive( Copy , Clone , Eq , PartialEq , Hash , PartialOrd , Ord ) ]
29
+ #[ derive( Copy , Hash ) ]
30
+ #[ derive_const( Clone , PartialEq , Eq , PartialOrd , Ord ) ]
30
31
pub enum IpAddr {
31
32
/// An IPv4 address.
32
33
#[ stable( feature = "ip_addr" , since = "1.7.0" ) ]
@@ -68,7 +69,8 @@ pub enum IpAddr {
68
69
/// assert!("0xcb.0x0.0x71.0x00".parse::<Ipv4Addr>().is_err()); // all octets are in hex
69
70
/// ```
70
71
#[ rustc_diagnostic_item = "Ipv4Addr" ]
71
- #[ derive( Copy , Clone , PartialEq , Eq ) ]
72
+ #[ derive( Copy ) ]
73
+ #[ derive_const( Clone , PartialEq , Eq ) ]
72
74
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
73
75
pub struct Ipv4Addr {
74
76
octets : [ u8 ; 4 ] ,
@@ -161,7 +163,8 @@ impl Hash for Ipv4Addr {
161
163
/// assert_eq!(localhost.is_loopback(), true);
162
164
/// ```
163
165
#[ rustc_diagnostic_item = "Ipv6Addr" ]
164
- #[ derive( Copy , Clone , PartialEq , Eq ) ]
166
+ #[ derive( Copy ) ]
167
+ #[ derive_const( Clone , PartialEq , Eq ) ]
165
168
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
166
169
pub struct Ipv6Addr {
167
170
octets : [ u8 ; 16 ] ,
@@ -1161,7 +1164,8 @@ impl fmt::Debug for Ipv4Addr {
1161
1164
}
1162
1165
1163
1166
#[ stable( feature = "ip_cmp" , since = "1.16.0" ) ]
1164
- impl PartialEq < Ipv4Addr > for IpAddr {
1167
+ #[ rustc_const_unstable( feature = "const_cmp" , issue = "143800" ) ]
1168
+ impl const PartialEq < Ipv4Addr > for IpAddr {
1165
1169
#[ inline]
1166
1170
fn eq ( & self , other : & Ipv4Addr ) -> bool {
1167
1171
match self {
@@ -1172,7 +1176,8 @@ impl PartialEq<Ipv4Addr> for IpAddr {
1172
1176
}
1173
1177
1174
1178
#[ stable( feature = "ip_cmp" , since = "1.16.0" ) ]
1175
- impl PartialEq < IpAddr > for Ipv4Addr {
1179
+ #[ rustc_const_unstable( feature = "const_cmp" , issue = "143800" ) ]
1180
+ impl const PartialEq < IpAddr > for Ipv4Addr {
1176
1181
#[ inline]
1177
1182
fn eq ( & self , other : & IpAddr ) -> bool {
1178
1183
match other {
@@ -1183,15 +1188,17 @@ impl PartialEq<IpAddr> for Ipv4Addr {
1183
1188
}
1184
1189
1185
1190
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
1186
- impl PartialOrd for Ipv4Addr {
1191
+ #[ rustc_const_unstable( feature = "const_cmp" , issue = "143800" ) ]
1192
+ impl const PartialOrd for Ipv4Addr {
1187
1193
#[ inline]
1188
1194
fn partial_cmp ( & self , other : & Ipv4Addr ) -> Option < Ordering > {
1189
1195
Some ( self . cmp ( other) )
1190
1196
}
1191
1197
}
1192
1198
1193
1199
#[ stable( feature = "ip_cmp" , since = "1.16.0" ) ]
1194
- impl PartialOrd < Ipv4Addr > for IpAddr {
1200
+ #[ rustc_const_unstable( feature = "const_cmp" , issue = "143800" ) ]
1201
+ impl const PartialOrd < Ipv4Addr > for IpAddr {
1195
1202
#[ inline]
1196
1203
fn partial_cmp ( & self , other : & Ipv4Addr ) -> Option < Ordering > {
1197
1204
match self {
@@ -1202,7 +1209,8 @@ impl PartialOrd<Ipv4Addr> for IpAddr {
1202
1209
}
1203
1210
1204
1211
#[ stable( feature = "ip_cmp" , since = "1.16.0" ) ]
1205
- impl PartialOrd < IpAddr > for Ipv4Addr {
1212
+ #[ rustc_const_unstable( feature = "const_cmp" , issue = "143800" ) ]
1213
+ impl const PartialOrd < IpAddr > for Ipv4Addr {
1206
1214
#[ inline]
1207
1215
fn partial_cmp ( & self , other : & IpAddr ) -> Option < Ordering > {
1208
1216
match other {
@@ -1213,7 +1221,8 @@ impl PartialOrd<IpAddr> for Ipv4Addr {
1213
1221
}
1214
1222
1215
1223
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
1216
- impl Ord for Ipv4Addr {
1224
+ #[ rustc_const_unstable( feature = "const_cmp" , issue = "143800" ) ]
1225
+ impl const Ord for Ipv4Addr {
1217
1226
#[ inline]
1218
1227
fn cmp ( & self , other : & Ipv4Addr ) -> Ordering {
1219
1228
self . octets . cmp ( & other. octets )
@@ -2155,7 +2164,8 @@ impl fmt::Debug for Ipv6Addr {
2155
2164
}
2156
2165
2157
2166
#[ stable( feature = "ip_cmp" , since = "1.16.0" ) ]
2158
- impl PartialEq < IpAddr > for Ipv6Addr {
2167
+ #[ rustc_const_unstable( feature = "const_cmp" , issue = "143800" ) ]
2168
+ impl const PartialEq < IpAddr > for Ipv6Addr {
2159
2169
#[ inline]
2160
2170
fn eq ( & self , other : & IpAddr ) -> bool {
2161
2171
match other {
@@ -2166,7 +2176,8 @@ impl PartialEq<IpAddr> for Ipv6Addr {
2166
2176
}
2167
2177
2168
2178
#[ stable( feature = "ip_cmp" , since = "1.16.0" ) ]
2169
- impl PartialEq < Ipv6Addr > for IpAddr {
2179
+ #[ rustc_const_unstable( feature = "const_cmp" , issue = "143800" ) ]
2180
+ impl const PartialEq < Ipv6Addr > for IpAddr {
2170
2181
#[ inline]
2171
2182
fn eq ( & self , other : & Ipv6Addr ) -> bool {
2172
2183
match self {
@@ -2177,15 +2188,17 @@ impl PartialEq<Ipv6Addr> for IpAddr {
2177
2188
}
2178
2189
2179
2190
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
2180
- impl PartialOrd for Ipv6Addr {
2191
+ #[ rustc_const_unstable( feature = "const_cmp" , issue = "143800" ) ]
2192
+ impl const PartialOrd for Ipv6Addr {
2181
2193
#[ inline]
2182
2194
fn partial_cmp ( & self , other : & Ipv6Addr ) -> Option < Ordering > {
2183
2195
Some ( self . cmp ( other) )
2184
2196
}
2185
2197
}
2186
2198
2187
2199
#[ stable( feature = "ip_cmp" , since = "1.16.0" ) ]
2188
- impl PartialOrd < Ipv6Addr > for IpAddr {
2200
+ #[ rustc_const_unstable( feature = "const_cmp" , issue = "143800" ) ]
2201
+ impl const PartialOrd < Ipv6Addr > for IpAddr {
2189
2202
#[ inline]
2190
2203
fn partial_cmp ( & self , other : & Ipv6Addr ) -> Option < Ordering > {
2191
2204
match self {
@@ -2196,7 +2209,8 @@ impl PartialOrd<Ipv6Addr> for IpAddr {
2196
2209
}
2197
2210
2198
2211
#[ stable( feature = "ip_cmp" , since = "1.16.0" ) ]
2199
- impl PartialOrd < IpAddr > for Ipv6Addr {
2212
+ #[ rustc_const_unstable( feature = "const_cmp" , issue = "143800" ) ]
2213
+ impl const PartialOrd < IpAddr > for Ipv6Addr {
2200
2214
#[ inline]
2201
2215
fn partial_cmp ( & self , other : & IpAddr ) -> Option < Ordering > {
2202
2216
match other {
@@ -2207,7 +2221,8 @@ impl PartialOrd<IpAddr> for Ipv6Addr {
2207
2221
}
2208
2222
2209
2223
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
2210
- impl Ord for Ipv6Addr {
2224
+ #[ rustc_const_unstable( feature = "const_cmp" , issue = "143800" ) ]
2225
+ impl const Ord for Ipv6Addr {
2211
2226
#[ inline]
2212
2227
fn cmp ( & self , other : & Ipv6Addr ) -> Ordering {
2213
2228
self . segments ( ) . cmp ( & other. segments ( ) )
@@ -2223,6 +2238,7 @@ impl const From<Ipv6Addr> for u128 {
2223
2238
ip. to_bits ( )
2224
2239
}
2225
2240
}
2241
+
2226
2242
#[ stable( feature = "i128" , since = "1.26.0" ) ]
2227
2243
#[ rustc_const_unstable( feature = "const_convert" , issue = "143773" ) ]
2228
2244
impl const From < u128 > for Ipv6Addr {
0 commit comments