Skip to content

Commit a9212b8

Browse files
Make the ASCII ctype inherent methods const
1 parent a29424a commit a9212b8

File tree

3 files changed

+41
-20
lines changed

3 files changed

+41
-20
lines changed

src/libcore/char/methods.rs

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,8 +1072,9 @@ impl char {
10721072
/// assert!(!esc.is_ascii_alphabetic());
10731073
/// ```
10741074
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
1075+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
10751076
#[inline]
1076-
pub fn is_ascii_alphabetic(&self) -> bool {
1077+
pub const fn is_ascii_alphabetic(&self) -> bool {
10771078
self.is_ascii() && (*self as u8).is_ascii_alphabetic()
10781079
}
10791080

@@ -1104,8 +1105,9 @@ impl char {
11041105
/// assert!(!esc.is_ascii_uppercase());
11051106
/// ```
11061107
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
1108+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
11071109
#[inline]
1108-
pub fn is_ascii_uppercase(&self) -> bool {
1110+
pub const fn is_ascii_uppercase(&self) -> bool {
11091111
self.is_ascii() && (*self as u8).is_ascii_uppercase()
11101112
}
11111113

@@ -1136,8 +1138,9 @@ impl char {
11361138
/// assert!(!esc.is_ascii_lowercase());
11371139
/// ```
11381140
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
1141+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
11391142
#[inline]
1140-
pub fn is_ascii_lowercase(&self) -> bool {
1143+
pub const fn is_ascii_lowercase(&self) -> bool {
11411144
self.is_ascii() && (*self as u8).is_ascii_lowercase()
11421145
}
11431146

@@ -1171,8 +1174,9 @@ impl char {
11711174
/// assert!(!esc.is_ascii_alphanumeric());
11721175
/// ```
11731176
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
1177+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
11741178
#[inline]
1175-
pub fn is_ascii_alphanumeric(&self) -> bool {
1179+
pub const fn is_ascii_alphanumeric(&self) -> bool {
11761180
self.is_ascii() && (*self as u8).is_ascii_alphanumeric()
11771181
}
11781182

@@ -1203,8 +1207,9 @@ impl char {
12031207
/// assert!(!esc.is_ascii_digit());
12041208
/// ```
12051209
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
1210+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
12061211
#[inline]
1207-
pub fn is_ascii_digit(&self) -> bool {
1212+
pub const fn is_ascii_digit(&self) -> bool {
12081213
self.is_ascii() && (*self as u8).is_ascii_digit()
12091214
}
12101215

@@ -1238,8 +1243,9 @@ impl char {
12381243
/// assert!(!esc.is_ascii_hexdigit());
12391244
/// ```
12401245
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
1246+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
12411247
#[inline]
1242-
pub fn is_ascii_hexdigit(&self) -> bool {
1248+
pub const fn is_ascii_hexdigit(&self) -> bool {
12431249
self.is_ascii() && (*self as u8).is_ascii_hexdigit()
12441250
}
12451251

@@ -1274,8 +1280,9 @@ impl char {
12741280
/// assert!(!esc.is_ascii_punctuation());
12751281
/// ```
12761282
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
1283+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
12771284
#[inline]
1278-
pub fn is_ascii_punctuation(&self) -> bool {
1285+
pub const fn is_ascii_punctuation(&self) -> bool {
12791286
self.is_ascii() && (*self as u8).is_ascii_punctuation()
12801287
}
12811288

@@ -1306,8 +1313,9 @@ impl char {
13061313
/// assert!(!esc.is_ascii_graphic());
13071314
/// ```
13081315
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
1316+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
13091317
#[inline]
1310-
pub fn is_ascii_graphic(&self) -> bool {
1318+
pub const fn is_ascii_graphic(&self) -> bool {
13111319
self.is_ascii() && (*self as u8).is_ascii_graphic()
13121320
}
13131321

@@ -1355,8 +1363,9 @@ impl char {
13551363
/// assert!(!esc.is_ascii_whitespace());
13561364
/// ```
13571365
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
1366+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
13581367
#[inline]
1359-
pub fn is_ascii_whitespace(&self) -> bool {
1368+
pub const fn is_ascii_whitespace(&self) -> bool {
13601369
self.is_ascii() && (*self as u8).is_ascii_whitespace()
13611370
}
13621371

@@ -1389,8 +1398,9 @@ impl char {
13891398
/// assert!(esc.is_ascii_control());
13901399
/// ```
13911400
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
1401+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
13921402
#[inline]
1393-
pub fn is_ascii_control(&self) -> bool {
1403+
pub const fn is_ascii_control(&self) -> bool {
13941404
self.is_ascii() && (*self as u8).is_ascii_control()
13951405
}
13961406
}

src/libcore/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
#![feature(bound_cloned)]
7171
#![feature(cfg_target_has_atomic)]
7272
#![feature(concat_idents)]
73+
#![feature(const_ascii_ctype_on_intrinsics)]
7374
#![feature(const_alloc_layout)]
7475
#![feature(const_if_match)]
7576
#![feature(const_checked_int_methods)]

src/libcore/num/mod.rs

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4448,8 +4448,9 @@ impl u8 {
44484448
/// assert!(!esc.is_ascii_alphabetic());
44494449
/// ```
44504450
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
4451+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
44514452
#[inline]
4452-
pub fn is_ascii_alphabetic(&self) -> bool {
4453+
pub const fn is_ascii_alphabetic(&self) -> bool {
44534454
matches!(*self, b'A'..=b'Z' | b'a'..=b'z')
44544455
}
44554456

@@ -4480,8 +4481,9 @@ impl u8 {
44804481
/// assert!(!esc.is_ascii_uppercase());
44814482
/// ```
44824483
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
4484+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
44834485
#[inline]
4484-
pub fn is_ascii_uppercase(&self) -> bool {
4486+
pub const fn is_ascii_uppercase(&self) -> bool {
44854487
matches!(*self, b'A'..=b'Z')
44864488
}
44874489

@@ -4512,8 +4514,9 @@ impl u8 {
45124514
/// assert!(!esc.is_ascii_lowercase());
45134515
/// ```
45144516
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
4517+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
45154518
#[inline]
4516-
pub fn is_ascii_lowercase(&self) -> bool {
4519+
pub const fn is_ascii_lowercase(&self) -> bool {
45174520
matches!(*self, b'a'..=b'z')
45184521
}
45194522

@@ -4547,8 +4550,9 @@ impl u8 {
45474550
/// assert!(!esc.is_ascii_alphanumeric());
45484551
/// ```
45494552
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
4553+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
45504554
#[inline]
4551-
pub fn is_ascii_alphanumeric(&self) -> bool {
4555+
pub const fn is_ascii_alphanumeric(&self) -> bool {
45524556
matches!(*self, b'0'..=b'9' | b'A'..=b'Z' | b'a'..=b'z')
45534557
}
45544558

@@ -4579,8 +4583,9 @@ impl u8 {
45794583
/// assert!(!esc.is_ascii_digit());
45804584
/// ```
45814585
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
4586+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
45824587
#[inline]
4583-
pub fn is_ascii_digit(&self) -> bool {
4588+
pub const fn is_ascii_digit(&self) -> bool {
45844589
matches!(*self, b'0'..=b'9')
45854590
}
45864591

@@ -4614,8 +4619,9 @@ impl u8 {
46144619
/// assert!(!esc.is_ascii_hexdigit());
46154620
/// ```
46164621
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
4622+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
46174623
#[inline]
4618-
pub fn is_ascii_hexdigit(&self) -> bool {
4624+
pub const fn is_ascii_hexdigit(&self) -> bool {
46194625
matches!(*self, b'0'..=b'9' | b'A'..=b'F' | b'a'..=b'f')
46204626
}
46214627

@@ -4650,8 +4656,9 @@ impl u8 {
46504656
/// assert!(!esc.is_ascii_punctuation());
46514657
/// ```
46524658
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
4659+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
46534660
#[inline]
4654-
pub fn is_ascii_punctuation(&self) -> bool {
4661+
pub const fn is_ascii_punctuation(&self) -> bool {
46554662
matches!(*self, b'!'..=b'/' | b':'..=b'@' | b'['..=b'`' | b'{'..=b'~')
46564663
}
46574664

@@ -4682,8 +4689,9 @@ impl u8 {
46824689
/// assert!(!esc.is_ascii_graphic());
46834690
/// ```
46844691
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
4692+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
46854693
#[inline]
4686-
pub fn is_ascii_graphic(&self) -> bool {
4694+
pub const fn is_ascii_graphic(&self) -> bool {
46874695
matches!(*self, b'!'..=b'~')
46884696
}
46894697

@@ -4731,8 +4739,9 @@ impl u8 {
47314739
/// assert!(!esc.is_ascii_whitespace());
47324740
/// ```
47334741
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
4742+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
47344743
#[inline]
4735-
pub fn is_ascii_whitespace(&self) -> bool {
4744+
pub const fn is_ascii_whitespace(&self) -> bool {
47364745
matches!(*self, b'\t' | b'\n' | b'\x0C' | b'\r' | b' ')
47374746
}
47384747

@@ -4765,8 +4774,9 @@ impl u8 {
47654774
/// assert!(esc.is_ascii_control());
47664775
/// ```
47674776
#[stable(feature = "ascii_ctype_on_intrinsics", since = "1.24.0")]
4777+
#[rustc_const_unstable(feature = "const_ascii_ctype_on_intrinsics", issue = "68983")]
47684778
#[inline]
4769-
pub fn is_ascii_control(&self) -> bool {
4779+
pub const fn is_ascii_control(&self) -> bool {
47704780
matches!(*self, b'\0'..=b'\x1F' | b'\x7F')
47714781
}
47724782
}

0 commit comments

Comments
 (0)