Skip to content

Commit 986c772

Browse files
author
Michael A. Plikk
committed
Reduce number of split_at calls
1 parent 38d287f commit 986c772

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

clippy_lints/src/literal_representation.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -155,17 +155,18 @@ impl<'a> DigitInfo<'a> {
155155
(Some(p), s)
156156
};
157157

158+
let len = sans_prefix.len();
158159
let mut last_d = '\0';
159160
for (d_idx, d) in sans_prefix.char_indices() {
160161
let suffix_start = if last_d == '_' {
161162
d_idx - 1
162163
} else {
163164
d_idx
164165
};
165-
let (digits, suffix) = sans_prefix.split_at(suffix_start);
166166
if !float && (d == 'i' || d == 'u') ||
167167
float && (d == 'f' || d == 'e' || d == 'E') ||
168-
!float && is_mistyped_suffix(suffix) {
168+
!float && is_possible_suffix_index(&sans_prefix, suffix_start, len) {
169+
let (digits, suffix) = sans_prefix.split_at(suffix_start);
169170
return Self {
170171
digits,
171172
radix,
@@ -557,3 +558,8 @@ impl LiteralRepresentation {
557558
fn is_mistyped_suffix(suffix: &str) -> bool {
558559
["_8", "_16", "_32", "_64"].contains(&suffix)
559560
}
561+
562+
fn is_possible_suffix_index(lit: &str, idx: usize, len: usize) -> bool {
563+
((len > 3 && idx == len - 3) || (len > 2 && idx == len - 2)) &&
564+
is_mistyped_suffix(lit.split_at(idx).1)
565+
}

0 commit comments

Comments
 (0)