]> git.lizzy.rs Git - rust.git/commitdiff
Reuse results from split_into_parts()
authorOleg Matrokhin <matrokhin@gmail.com>
Mon, 13 Dec 2021 18:16:04 +0000 (21:16 +0300)
committerOleg Matrokhin <matrokhin@gmail.com>
Mon, 13 Dec 2021 18:16:04 +0000 (21:16 +0300)
crates/ide_assists/src/handlers/number_representation.rs
crates/syntax/src/ast/token_ext.rs

index d1ca1ad1c8043c9aec8c51f0d2b199c3e9122fb3..df017636631e7b816239c5ac3856eee730f661ca 100644 (file)
@@ -27,17 +27,15 @@ pub(crate) fn reformat_number_literal(acc: &mut Assists, ctx: &AssistContext) ->
         return remove_separators(acc, literal);
     }
 
-    let value = literal.str_value();
+    let (prefix, value, suffix) = literal.split_into_parts();
     if value.len() < MIN_NUMBER_OF_DIGITS_TO_FORMAT {
         return None;
     }
 
     let radix = literal.radix();
-    let mut converted = literal.prefix().to_string();
-    converted.push_str(&add_group_separators(literal.str_value(), group_size(radix)));
-    if let Some(suffix) = literal.suffix() {
-        converted.push_str(suffix);
-    }
+    let mut converted = prefix.to_string();
+    converted.push_str(&add_group_separators(value, group_size(radix)));
+    converted.push_str(suffix);
 
     let group_id = GroupLabel("Reformat number literal".into());
     let label = format!("Convert {} to {}", literal, converted);
index 2465e4a3a31567eb03f16a9edf2ebde71f7b929f..c32ab686ccad7d4a878e7ca5184b1e92d3f159f7 100644 (file)
@@ -613,8 +613,6 @@ fn char_ranges(
     }
 }
 
-struct IntNumberParts<'a>(&'a str, &'a str, &'a str);
-
 impl ast::IntNumber {
     pub fn radix(&self) -> Radix {
         match self.text().get(..2).unwrap_or_default() {
@@ -625,7 +623,7 @@ pub fn radix(&self) -> Radix {
         }
     }
 
-    fn split_into_parts(&self) -> IntNumberParts {
+    pub fn split_into_parts(&self) -> (&str, &str, &str) {
         let radix = self.radix();
         let (prefix, mut text) = self.text().split_at(radix.prefix_len());
 
@@ -641,25 +639,17 @@ fn split_into_parts(&self) -> IntNumberParts {
             suffix = suffix2;
         };
 
-        IntNumberParts(prefix, text, suffix)
-    }
-
-    pub fn prefix(&self) -> &str {
-        self.split_into_parts().0
-    }
-
-    pub fn str_value(&self) -> &str {
-        self.split_into_parts().1
+        (prefix, text, suffix)
     }
 
     pub fn value(&self) -> Option<u128> {
-        let text = self.str_value().replace("_", "");
-        let value = u128::from_str_radix(&text, self.radix() as u32).ok()?;
+        let (_, text, _) = self.split_into_parts();
+        let value = u128::from_str_radix(&text.replace("_", ""), self.radix() as u32).ok()?;
         Some(value)
     }
 
     pub fn suffix(&self) -> Option<&str> {
-        let suffix = self.split_into_parts().2;
+        let (_, _, suffix) = self.split_into_parts();
         if suffix.is_empty() {
             None
         } else {