name: rust-lint description: Rust code quality check - Use Clippy and Rustfmt to ensure Rust code standards and performance optimization
Rust Lint Skill
๐ Overview
Use Rust official toolchain to check code quality:
- Clippy: Smart code checks (450+ rules)
- Rustfmt: Code formatting
๐ง Prerequisites
| Tool | Min Version | Installation |
|---|---|---|
| Rust | 1.70+ | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh |
| Clippy | - | rustup component add clippy |
| Rustfmt | - | rustup component add rustfmt |
๐ Usage
Run Clippy:
.\.agent\skills\rust-lint\scripts\lint.ps1
Auto-fix:
.\.agent\skills\rust-lint\scripts\lint.ps1 -Fix
Format code:
.\.agent\skills\rust-lint\scripts\format.ps1
๐ฏ What It Checks
Performance Optimization
- โ Avoid unnecessary clones
- โ Use iterators instead of loops
- โ String handling optimization
- โ Collection operation efficiency
Security
- โ Unused unsafe code
- โ Integer overflow detection
- โ Null pointer dereference
- โ Lifetime issues
Idiomatic Rust
- โ Pattern matching recommendations
- โ Option/Result usage
- โ Error handling best practices
- โ Trait implementation suggestions
๐ Output Example
๐ฆ Rust Lint - Checking project...
warning: unnecessary use of `clone`
--> src/main.rs:15:18
|
15 | let data = items.clone();
| ^^^^^^^^ help: remove this
|
= note: `#[warn(clippy::unnecessary_clone)]` on by default
error: indexing may panic
--> src/lib.rs:42:13
|
42 | let x = arr[5];
| ^^^^^^
|
= help: consider using `.get()` or `.get_mut()`
๐ Results:
โ Errors: 1
โ ๏ธ Warnings: 3
โ๏ธ Configuration
Create clippy.toml:
cognitive-complexity-threshold = 30
too-many-arguments-threshold = 8
disallowed-methods = [
"std::env::set_var", # Unsafe environment variable setting
]
# Allowed lints
allow = [
"clippy::module_name_repetitions",
]
# Warning level lints
warn = [
"clippy::pedantic",
"clippy::nursery",
]
# Denied lints
deny = [
"clippy::unwrap_used",
"clippy::expect_used",
]
Create rustfmt.toml:
max_width = 100
indent_style = "Block"
use_small_heuristics = "Default"
imports_granularity = "Crate"