About rust
Rust is a systems programming language focused on memory safety, concurrency, and performance. This skill offers practical guidance for developers building services, CLI tools, terminal interfaces, WebAssembly, and other performance-sensitive software.
Key features
- 01Ownership and borrowing guidance
- 02Error handling patterns
- 03Async programming with Tokio
- 04Web services with axum
- 05CLI development with clap
- 06Testing and benchmarking
Use cases
- 01Build memory-safe systems software
- 02Develop asynchronous web services
- 03Create command-line tools and terminal UIs
- 04Benchmark performance-sensitive applications
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill rustAfter installing, type/rustin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/async-tokio.mdaxum-web.mdcli-applications.mderror-handling.mdownership-and-types.mdratatui-tui.mdrelease-pipeline.mdtesting-and-benchmarks.mdDetails
From the project READMERust
Overview
Rust is a systems programming language focused on safety, concurrency, and performance. The ownership system guarantees memory safety without garbage collection, and the type system enforces thread safety at compile time.
When to use: Systems programming, web services (axum), CLI tools (clap), terminal UIs (ratatui), WebAssembly, performance-critical applications, anything requiring memory safety without runtime overhead.
When NOT to use: Rapid prototyping where compile times matter more than safety, simple scripting tasks, projects where the team has no Rust experience and deadlines are tight.
Quick Reference
| Pattern | API / Tool | Key Points |
|---|---|---|
| Ownership transfer | let b = a; | a is moved, no longer usable |
| Borrowing | &T / &mut T | One mutable OR many immutable refs |
| Lifetime annotation | fn f<'a>(x: &'a str) -> &'a str | Ties output lifetime to input |
| Error propagation | ? operator | Converts and propagates errors |
| Custom errors | thiserror::Error derive | Structured error types with Display |
| Ad-hoc errors | anyhow::Result<T> | Context chaining for applications |
| Async runtime | #[tokio::main] | Entry point for async programs |
| Spawn task | tokio::spawn(async { }) | Concurrent async task execution |
| HTTP router | axum::Router::new().route(...) | Composable routing with extractors |
| Extractors | Json<T>, Path<T>, State<T> | Type-safe request parsing |
| Serialization | #[derive(Serialize, Deserialize)] | serde with format-agnostic derives |
| CLI parsing | #[derive(Parser)] | clap derive API for arg parsing |
| TUI rendering | terminal.draw(|f| { }) | Immediate-mode ratatui rendering |
| Benchmarking | criterion::Criterion | Statistical benchmarking framework |
| Dep auditing | cargo deny check | License, vulnerability, source audit |
| Binary release | cargo dist init | Cross-platform binary distribution |
| Changelog | release-plz update | Auto semver bump and changelog |
Common Mistakes
| Mistake | Correct Pattern |
|---|---|
| Returning reference to local variable | Return owned type or use lifetime parameter |
Using unwrap() in library code | Return Result and let caller decide |
clone() to satisfy borrow checker | Restructure code to avoid the borrow conflict |
| Blocking in async context | Use tokio::task::spawn_blocking |
| Shared mutable state without sync | Use Arc<Mutex<T>> or channels |
String where &str suffices | Accept &str in function parameters |
Ignoring must_use warnings | Handle or explicitly discard with let _ = |
| Large enum variants | Box the large variant to reduce overall size |
async fn in traits without bounds | Add Send bound or use async-trait crate |
Missing #[tokio::test] on async tests | Use #[tokio::test] instead of #[test] |
Delegation
- Code exploration: Use
Exploreagent - Architecture review: Use
Taskagent - Code review: Delegate to
code-revieweragent
If the
dockerskill is available, delegate multi-stage container build patterns to it. If thegithub-actionsskill is available, delegate CI pipeline configuration to it. If theopenapiskill is available, delegate API specification and code generation to it.
References
- Ownership, borrowing, lifetimes, and type system patterns
- Error handling with Result, Option, thiserror, and anyhow
- Async programming with Tokio runtime and concurrency
- Web APIs and backends with axum, tower, and sqlx
- Terminal user interfaces with ratatui and crossterm
- CLI applications with clap, config, and signal handling
- Testing patterns and criterion benchmarking
- Release pipeline with cargo-deny, cargo-dist, and release-plz