Rust-skills rust-learner
Rust learning and ecosystem tracking expert covering version updates, new features, RFC tracking, crate updates, best practice evolution, and learning resources.
install
source · Clone the upstream repo
git clone https://github.com/huiali/rust-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/huiali/rust-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.codex/skills/rust-learner" ~/.claude/skills/huiali-rust-skills-rust-learner && rm -rf "$T"
manifest:
.codex/skills/rust-learner/SKILL.mdsource content
Version Update Strategy
Stable Updates
# Check current version rustc --version # Update Rust rustup update stable # View changelog rustup doc --changelog
When to Upgrade
| Scenario | Recommendation |
|---|---|
| New project | Use latest stable |
| Production project | Follow 6-week cycle |
| Library project | Consider MSRV policy |
MSRV (Minimum Supported Rust Version)
[package] rust-version = "1.70" # Declare minimum version [dependencies] # MSRV-sensitive dependencies require care serde = { version = "1.0", default-features = false }
Solution Patterns
Pattern 1: Following Stable Releases
# Quarterly update routine rustup update stable cargo outdated cargo audit cargo test --all-features # Read release notes rustup doc --changelog
Pattern 2: Tracking Ecosystem Changes
# Check for breaking changes cargo update --dry-run # Security audit cargo audit # License check cargo deny check licenses # Check dependency tree cargo tree
Pattern 3: Learning New Features
// Edition 2024 features // Inline const (1.79+) const fn compute() -> [u8; 32] { let mut arr = [0u8; 32]; // compute at compile time arr } // Never type improvements (1.82+) fn diverge() -> ! { panic!("never returns") } // Async fn in trait (1.75+) trait Repository { async fn fetch(&self, id: u64) -> Result<Data, Error>; }
Learning Path
Beginner → Advanced
Basics → Ownership, lifetimes, borrow checker ↓ Intermediate → Trait objects, generics, closures ↓ Concurrency → async/await, threads, channels ↓ Advanced → unsafe, FFI, performance optimization ↓ Expert → Macros, type system, design patterns
Information Sources
Official Channels
| Source | Content | Frequency |
|---|---|---|
| This Week in Rust | Weekly digest, RFCs, blogs | Weekly |
| Rust Blog | Major releases, deep dives | As released |
| Rust RFCs | Design discussions | Ongoing |
| Release Notes | Version changes | Every 6 weeks |
Community Resources
| Resource | Content |
|---|---|
| docs.rs | Documentation search |
| crates.io | Package search |
| lib.rs | Find alternative crates |
| Rust Analyzer | IDE plugin |
Dependency Management
Regular Updates
# Check outdated dependencies cargo outdated # Update compatible versions cargo update # Update to latest (may break) cargo upgrade
Security Audit
# Check for known vulnerabilities cargo audit # Check dependency licenses cargo deny check licenses # Analyze dependency tree cargo tree -d # Show duplicates
Workflow
Quarterly Checklist
Every 3 months: - [ ] Upgrade to latest stable Rust - [ ] Run cargo outdated - [ ] Run cargo audit - [ ] Check dependencies for breaking changes - [ ] Evaluate new features worth adopting - [ ] Update tooling (clippy, rustfmt)
Annual Checklist
Every year: - [ ] Consider edition upgrade - [ ] Refactor deprecated patterns - [ ] Evaluate MSRV policy - [ ] Update development toolchain - [ ] Review architecture patterns
Learning Resources
Beginner
- The Rust Programming Language - Official book
- Rust by Example - Example-driven
- Rustlings - Interactive exercises
Intermediate
- The Rust Reference - Language reference
- Rust Nomicon - Unsafe guide
- Effective Rust - Best practices
Advanced
- Rust for Rustaceans - Advanced patterns
- Async Book - Async/await deep dive
- Rust API Guidelines - API design
Practice
- Exercism Rust Track - Practice problems
- Rust by Practice - Hands-on exercises
- Advent of Code - Annual coding challenge
Edition Update Strategy
| Edition | Released | Key Features |
|---|---|---|
| 2015 | Original | - |
| 2018 | Dec 2018 | Module system, NLL |
| 2021 | Oct 2021 | Disjoint captures, IntoIterator |
| 2024 | TBD | Gen blocks, async drop |
Upgrading Editions
# Check if upgrade possible cargo fix --edition # Update Cargo.toml # edition = "2024" # Test thoroughly cargo test --all-features
Review Checklist
When learning new Rust features:
- Feature is stable (not experimental)
- Understand the problem it solves
- Know when NOT to use it
- Aware of trade-offs
- Tested in small project first
- Read release notes thoroughly
- Checked ecosystem adoption
- Updated team documentation
Verification Commands
# Check Rust version rustc --version rustup show # Update toolchain rustup update # Check outdated dependencies cargo outdated # Security audit cargo audit # License compliance cargo deny check # Check for deprecated features cargo clippy -- -W deprecated
Common Pitfalls
1. Chasing Shiny Features
Symptom: Using unstable features in production
# ❌ Avoid: nightly features in production #![feature(generic_associated_types)] # ✅ Good: wait for stabilization # Use stable alternatives
2. Ignoring MSRV
Symptom: Breaking downstream users
# ✅ Good: declare MSRV [package] rust-version = "1.70" # Test against MSRV in CI # cargo +1.70 test
3. Not Reading Release Notes
Symptom: Surprised by breaking changes
# ✅ Good: read before updating rustup doc --changelog # Check crate changelogs cargo info <crate> --version <version>
Related Skills
- rust-ecosystem - Crate selection and tools
- rust-coding - Best practices and conventions
- rust-performance - Performance improvements
- rust-async - Async/await patterns
- rust-error - Error handling evolution
Localized Reference
- Chinese version: SKILL_ZH.md - 完整中文版本,包含所有内容