Mark str::is_char_boundary
and str::split_at*
unstably const
.
#131520
+71
−27
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Tracking issues: #131516, #131518
First commit implements
const_is_char_boundary
, second commit implementsconst_str_split_at
(which depends onconst_is_char_boundary
)I used
const_eval_select
foris_char_boundary
since there is a comment about optimizations that would theoretically not happen with the simpleconst
-compatible version (sinceslice::get
is notconst
ifiable) cc #84751. I have not checked if this code difference is still required for the optimization, so it might not be worth the code complication, but 🤷.This changes
str::split_at_checked
to use a new private helper functionsplit_at_unchecked
(copied fromsplit_at_mut_unchecked
) that does pointer stuff instead ofget_unchecked
, since that is not currentlyconst
ifiable due to using theSliceIndex
trait.