Rust learning and ecosystem tracking expert covering version updates, new features, RFC tracking, crate updates, best practice evolution, and learning resources.
# Check current version
rustc --version
# Update Rust
rustup update stable
# View changelog
rustup doc --changelog
| Scenario | Recommendation |
|---|---|
| New project | Use latest stable |
| Production project | Follow 6-week cycle |
| Library project | Consider MSRV policy |
[package]
rust-version = "1.70" # Declare minimum version
[dependencies]
# MSRV-sensitive dependencies require care
serde = { version = "1.0", default-features = false }
# Quarterly update routine
rustup update stable
cargo outdated
cargo audit
cargo test --all-features
# Read release notes
rustup doc --changelog
# Check for breaking changes
cargo update --dry-run
# Security audit
cargo audit
# License check
cargo deny check licenses
# Check dependency tree
cargo tree
// 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>;
}
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
| 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 |
| Resource | Content |
|---|---|
| docs.rs | Documentation search |
| crates.io | Package search |
| lib.rs | Find alternative crates |
| Rust Analyzer | IDE plugin |
# Check outdated dependencies
cargo outdated
# Update compatible versions
cargo update
# Update to latest (may break)
cargo upgrade
# Check for known vulnerabilities
cargo audit
# Check dependency licenses
cargo deny check licenses
# Analyze dependency tree
cargo tree -d # Show duplicates
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)
Every year:
- [ ] Consider edition upgrade
- [ ] Refactor deprecated patterns
- [ ] Evaluate MSRV policy
- [ ] Update development toolchain
- [ ] Review architecture patterns
| Edition | Released | Key Features |
|---|---|---|
| 2015 | Original | - |
| 2018 | Dec 2018 | Module system, NLL |
| 2021 | Oct 2021 | Disjoint captures, IntoIterator |
| 2024 | TBD | Gen blocks, async drop |
# Check if upgrade possible
cargo fix --edition
# Update Cargo.toml
# edition = "2024"
# Test thoroughly
cargo test --all-features
When learning new Rust features:
# 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
Symptom: Using unstable features in production
# โ Avoid: nightly features in production
#![feature(generic_associated_types)]
# โ
Good: wait for stabilization
# Use stable alternatives
Symptom: Breaking downstream users
# โ
Good: declare MSRV
[package]
rust-version = "1.70"
# Test against MSRV in CI
# cargo +1.70 test
Symptom: Surprised by breaking changes
# โ
Good: read before updating
rustup doc --changelog
# Check crate changelogs
cargo info <crate> --version <version>