File tree 3 files changed +20
-6
lines changed
3 files changed +20
-6
lines changed Original file line number Diff line number Diff line change 132
132
#![ feature( const_ipv4) ]
133
133
#![ feature( const_ipv6) ]
134
134
#![ feature( const_likely) ]
135
+ #![ feature( const_make_ascii) ]
135
136
#![ feature( const_maybe_uninit_assume_init) ]
136
137
#![ feature( const_nonnull_new) ]
137
138
#![ feature( const_num_midpoint) ]
150
151
#![ feature( const_slice_from_raw_parts_mut) ]
151
152
#![ feature( const_slice_from_ref) ]
152
153
#![ feature( const_slice_split_at_mut) ]
154
+ #![ feature( const_str_as_mut) ]
153
155
#![ feature( const_str_from_utf8_unchecked_mut) ]
154
156
#![ feature( const_strict_overflow_ops) ]
155
157
#![ feature( const_swap) ]
Original file line number Diff line number Diff line change @@ -67,10 +67,15 @@ impl [u8] {
67
67
///
68
68
/// [`to_ascii_uppercase`]: #method.to_ascii_uppercase
69
69
#[ stable( feature = "ascii_methods_on_intrinsics" , since = "1.23.0" ) ]
70
+ #[ rustc_const_unstable( feature = "const_make_ascii" , issue = "130698" ) ]
70
71
#[ inline]
71
- pub fn make_ascii_uppercase ( & mut self ) {
72
- for byte in self {
72
+ pub const fn make_ascii_uppercase ( & mut self ) {
73
+ // FIXME(const-hack): We would like to simply iterate using `for` loops but this isn't currently allowed in constant expressions.
74
+ let mut i = 0 ;
75
+ while i < self . len ( ) {
76
+ let byte = & mut self [ i] ;
73
77
byte. make_ascii_uppercase ( ) ;
78
+ i += 1 ;
74
79
}
75
80
}
76
81
@@ -84,10 +89,15 @@ impl [u8] {
84
89
///
85
90
/// [`to_ascii_lowercase`]: #method.to_ascii_lowercase
86
91
#[ stable( feature = "ascii_methods_on_intrinsics" , since = "1.23.0" ) ]
92
+ #[ rustc_const_unstable( feature = "const_make_ascii" , issue = "130698" ) ]
87
93
#[ inline]
88
- pub fn make_ascii_lowercase ( & mut self ) {
89
- for byte in self {
94
+ pub const fn make_ascii_lowercase ( & mut self ) {
95
+ // FIXME(const-hack): We would like to simply iterate using `for` loops but this isn't currently allowed in constant expressions.
96
+ let mut i = 0 ;
97
+ while i < self . len ( ) {
98
+ let byte = & mut self [ i] ;
90
99
byte. make_ascii_lowercase ( ) ;
100
+ i += 1 ;
91
101
}
92
102
}
93
103
Original file line number Diff line number Diff line change @@ -2473,8 +2473,9 @@ impl str {
2473
2473
/// assert_eq!("GRüßE, JüRGEN ❤", s);
2474
2474
/// ```
2475
2475
#[ stable( feature = "ascii_methods_on_intrinsics" , since = "1.23.0" ) ]
2476
+ #[ rustc_const_unstable( feature = "const_make_ascii" , issue = "130698" ) ]
2476
2477
#[ inline]
2477
- pub fn make_ascii_uppercase ( & mut self ) {
2478
+ pub const fn make_ascii_uppercase ( & mut self ) {
2478
2479
// SAFETY: changing ASCII letters only does not invalidate UTF-8.
2479
2480
let me = unsafe { self . as_bytes_mut ( ) } ;
2480
2481
me. make_ascii_uppercase ( )
@@ -2500,8 +2501,9 @@ impl str {
2500
2501
/// assert_eq!("grÜße, jÜrgen ❤", s);
2501
2502
/// ```
2502
2503
#[ stable( feature = "ascii_methods_on_intrinsics" , since = "1.23.0" ) ]
2504
+ #[ rustc_const_unstable( feature = "const_make_ascii" , issue = "130698" ) ]
2503
2505
#[ inline]
2504
- pub fn make_ascii_lowercase ( & mut self ) {
2506
+ pub const fn make_ascii_lowercase ( & mut self ) {
2505
2507
// SAFETY: changing ASCII letters only does not invalidate UTF-8.
2506
2508
let me = unsafe { self . as_bytes_mut ( ) } ;
2507
2509
me. make_ascii_lowercase ( )
You can’t perform that action at this time.
0 commit comments