rust: Follow-up fixes for attribute highlighting (#26172)

Finn Evers and Marshall Bowers created

Closes #26124

This PR fixes some more cases of improper attribute highlights for rust.

In #25501 I tried to address the regression in highlighting rust
attributes which were introduced by #25333 . However, I failed to
properly check all cases of attribute highlights as shown in the linked
issue - really sorry for that! Thus, this is a follow-up fix aiming to
resolve the issues the previous PR did not cover.

The changes do not affect any highlighting shown in the [previous
PR](https://github.com/zed-industries/zed/pull/25501):

| `main` | <img width="719" alt="main-working"
src="https://github.com/user-attachments/assets/9aa0e611-7bda-4b50-9335-c87da4c38057"
/> |
| --- | --- |
| This PR | <img width="719" alt="PR-working"
src="https://github.com/user-attachments/assets/605b275c-1d68-4bd7-97c6-251d7614a7ed"
/> |

But resolves the mentioned regressions in the linked issue:

| `main` | <img width="371" alt="main_broken"
src="https://github.com/user-attachments/assets/ebbb47b7-7945-41e0-b030-2fe3f2198653"
/> |
| --- | --- |
| This PR | <img width="371" alt="PR_broken"
src="https://github.com/user-attachments/assets/fa97408b-e1d6-4d99-81c1-cfb8073961a4"
/> |

Again, sorry for not checking this more thoroughly.


Release Notes:

- Fixed attributes in Rust being improperly highlighted.

Co-authored-by: Marshall Bowers <git@maxdeviant.com>

Change summary

crates/languages/src/rust/highlights.scm | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)

Detailed changes

crates/languages/src/rust/highlights.scm 🔗

@@ -190,9 +190,15 @@ operator: "/" @operator
 
 (parameter (identifier) @variable.parameter)
 
-(attribute_item (attribute (identifier) @attribute))
-(inner_attribute_item (attribute (identifier) @attribute))
+(attribute_item (attribute [
+  (identifier) @attribute
+  (scoped_identifier name: (identifier) @attribute)
+]))
+(inner_attribute_item (attribute [
+  (identifier) @attribute
+  (scoped_identifier name: (identifier) @attribute)
+]))
 ; Match nested snake case identifiers in attribute items.
 (token_tree (identifier) @attribute (#match? @attribute "^[a-z\\d_]*$"))
-; Override the attribute match for paths in scoped identifiers.
-(token_tree (identifier) @variable "::")
+; Override the attribute match for paths in scoped type/enum identifiers.
+(token_tree (identifier) @variable "::" (identifier) @type (#match? @type "^[A-Z]"))