]> git.lizzy.rs Git - rust.git/commitdiff
Avoid string copy in complete_attribute
authorLaurențiu Nicola <lnicola@dend.ro>
Sun, 10 Jan 2021 10:19:00 +0000 (12:19 +0200)
committerLaurențiu Nicola <lnicola@dend.ro>
Sun, 10 Jan 2021 10:19:00 +0000 (12:19 +0200)
crates/completion/src/completions/attribute.rs

index 3a29b5203f2adeeef6a5af2fd5d7e2a4faaab944..a52ca107e6b85d87b12630764e1b5e1a662893cd 100644 (file)
@@ -21,15 +21,17 @@ pub(crate) fn complete_attribute(acc: &mut Completions, ctx: &CompletionContext)
 
     let attribute = ctx.attribute_under_caret.as_ref()?;
     match (attribute.path(), attribute.token_tree()) {
-        (Some(path), Some(token_tree)) => match path.to_string().as_str() {
-            "derive" => complete_derive(acc, ctx, token_tree),
-            "feature" => complete_lint(acc, ctx, token_tree, FEATURES),
-            "allow" | "warn" | "deny" | "forbid" => {
+        (Some(path), Some(token_tree)) => {
+            let path = path.syntax().text();
+            if path == "derive" {
+                complete_derive(acc, ctx, token_tree)
+            } else if path == "feature" {
+                complete_lint(acc, ctx, token_tree, FEATURES)
+            } else if path == "allow" || path == "warn" || path == "deny" || path == "forbid" {
                 complete_lint(acc, ctx, token_tree.clone(), DEFAULT_LINT_COMPLETIONS);
                 complete_lint(acc, ctx, token_tree, CLIPPY_LINTS);
             }
-            _ => {}
-        },
+        }
         (_, Some(_token_tree)) => {}
         _ => complete_attribute_start(acc, ctx, attribute),
     }