rust-core-language
SkillMediaUse when writing or reviewing idiomatic Rust — edition 2024 ownership/borrowing design, or fixing LLM pitfalls (clone tax, unwrap infestation, indexed loops). Not for error-type design (rust-error-handling) or SOLID layout (solid-rust).
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the rust-core-language skill
What this skill tells your AI
The instructions your AI receives, as published by fusengine/agents in plugins/rust-expert/skills/rust-core-language/SKILL.md and read by ahel’s review.
It also covers correcting the recurring failure modes of machine-generated Rust: the clone tax (cloning to silence the borrow checker instead of redesigning ownership), unwrap/expect infestation, String vs &str misuse, indexed loops instead of iterators, and over-annotated lifetimes the compiler could elide.
Out of scope: error-type design (thiserror vs anyhow) belongs to rust-error-handling; async runtime questions belong to rust-async-concurrency; SOLID/file-layout rules belong to fuse-solid:solid-rust.
Rust Core Language
Idiomatic Rust for stable 1.96.1, edition 2024. This skill covers what the compiler will not catch for you: ownership design that avoids gratuitous cloning, and the recurring failure modes of machine-generated Rust.
Agent Workflow (MANDATORY)
- fuse-ai-pilot:research-expert — confirm the current stable version and any feature's stabilization release before relying on it (versions move fast).
- fuse-ai-pilot:explore-codebase — read the crate's
editioninCargo.tomland its existing ownership conventions before adding code. - After writing code, run fuse-ai-pilot:sniper and
cargo clippy.
Never state a stabilization version from memory — verify against
doc.rust-lang.org/releases.html.
Overview
| Topic | When |
|---|---|
| Edition 2024 features | Setting up a crate, using let chains / async closures |
| Ownership & borrowing | Designing function signatures and data flow |
| LLM pitfalls | Reviewing or repairing generated Rust before merge |
Critical Rules
- Borrow before you own. Take
&T/&str/&[T]in parameters unless the function must keep the value. See ownership-borrowing.md. .clone()needs a reason. A clone to silence a borrow-checker error is a design smell (the "clone tax"). Redesign ownership first; clone only when a second owner genuinely exists.- No
.unwrap()/.expect()on fallible values without a written justification. Grep for them before merge. Prefer?,match, or a documented invariant. Arc::clone(&x)overx.clone()for reference-counted handles — it makes the cheap pointer-copy explicit and distinguishes it from a deep clone.- Iterators over indexed loops. Prefer
iter()/map()/filter()/collect()tofor i in 0..len { v[i] }— no bounds-check noise, no off-by-one. - Let elision work. Do not annotate lifetimes the compiler can infer.
Verified Facts (source-checked)
- Edition 2024 stabilized in Rust 1.85.0 (2025-02-20), RFC #3501.
- Let chains (
if let A = x && let B = y && cond) stabilized in 1.88.0 (2025-06-26), edition 2024 only — depends on theif lettemporary-scope change. - Async closures (
async || { .. }) stabilized in 1.85.0. genblocks are UNSTABLE — feature gate#![feature(gen_blocks)], tracking issue rust-lang/rust#117078, RFC #3513. Do NOT use on stable; the returned iterators are not yet fused and the syntax may still change.
Reference Guide
Concepts
| Topic | Reference | Load when |
|---|---|---|
| Edition 2024 | edition-2024.md | Configuring edition, using let chains / async closures, checking feature stability |
| Ownership & borrowing | ownership-borrowing.md | Choosing owned vs borrowed params, designing lifetimes, sharing with Rc/Arc |
| LLM pitfalls | llm-pitfalls.md | Reviewing generated Rust for clone tax, unwrap infestation, String/&str, indexed loops |
Templates
| Template | Load when |
|---|---|
| idiomatic-code.md | Need copy-paste examples of borrow-first signatures, iterator chains, and let chains |
Validation Checklist
-
Cargo.tomldeclaresedition = "2024"if edition-2024 features are used - No
.clone()added purely to satisfy the borrow checker - Every
.unwrap()/.expect()has a justifying comment or is provably infallible - Parameters take references unless ownership is required
- No lifetime annotations the compiler can elide
-
cargo clippyclean, sniper passed
Signals
- GitHub stars
- 25
- Forks
- 4
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
rust-core-language- Source
- github.com/fusengine/agents