rust
Skill1 starsChanged 42 days ago0BSDView on GitHub
This skill covers the Rust toolchain and edition system, with the full Rust 2024 edition surface: language changes, stdlib, Cargo, rustdoc, rustfmt, and the migration workflow. Use when writing Rust, bumping an edition, reviewing edition-sensitive code, or pinning toolchain versions.
38 other projects use a version of this.
Adopted by
Most recently taken up by
- elodin-sys/elodintheir own version, first seen Nov 9, 2026
- crbnos/carbontheir own version, first seen Nov 7, 2026
- lawless-m/claude-skillstheir own version, first seen Nov 6, 2026
- inference-gateway/skillstheir own version, first seen Nov 5, 2026
- alexjmiller5/agent-config-publictheir own version, first seen Nov 1, 2026
- its-ash/skillstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use java, node and 9 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
testdino-hqSkilljava
Google's official Java style guide. Covers 2-space indentation, 100-char line limit, naming conventions, braces, imports, Javadoc, exception handling, lambdas, and streams. Enforces @Override annotations and specific imports.
Also in 4 projects that use this
mcollinaSkillnode
Provides domain-specific best practices for Node.js development with TypeScript, covering type stripping, async patterns, error handling, streams, modules, testing, performance, caching, logging, and more. Use when setting up Node.js projects with native TypeScript support, configuring type stripping (--experimental-strip-types), writing Node 22+ TypeScript without a build step, or when the user mentions 'native TypeScript in Node', 'strip types', 'Node 22 TypeScript', '.ts files without compilation', 'ts-node alternative', or needs guidance on error handling, graceful shutdown, flaky tests, profiling, or environment configuration in Node.js. Helps configure tsconfig.json for type stripping, set up package.json scripts, handle module resolution and import extensions, and apply robust patterns across the full Node.js stack.
Also in 3 projects that use this
rogue-dev-studioSkillpython
Python 3.13 with uv package manager via mise. Use when the project needs this capability or the user / team manifest asks for it. Use for specialized `python` work when listed in TEAM.yaml or explicitly requested.
Also in 6 projects that use this
rogue-dev-studioSkillgolang
Go development environment. Use when the project needs this capability or the user / team manifest asks for it. Use for specialized `golang` work when listed in TEAM.yaml or explicitly requested.
Also in 3 projects that use this
trotsky1997Skillast-grep
Guide for writing ast-grep rules to perform structural code search and analysis. Use when users need to search codebases using Abstract Syntax Tree (AST) patterns, find specific code structures, or perform complex code queries that go beyond simple text search. This skill should be used when users ask to search for code patterns, find specific language constructs, or locate code with particular structural characteristics.
Also in 3 projects that use this
OpenAISkillnextjs
Next.js App Router expert guidance. Use when building, debugging, or architecting Next.js applications — routing, Server Components, Server Actions, Cache Components, layouts, middleware/proxy, data fetching, rendering strategies, and deployment on Vercel.
Also in 3 projects that use this
Other versions38 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 38
- ccusage/ccusage★ 19ksame name
- ryoppippi/ccusage★ 19ksame name
- microsoft/fast★ 9.7ksame name
- pgdogdev/pgdog★ 5.6ksame name
- crbnos/carbon★ 2.8ksame name
- elodin-sys/elodin★ 553same name
- Mindrally/skills★ 275same name
- Moosync/Moosync★ 264same name
- wado-lang/wado★ 120same name
- databricks-solutions/apx★ 91same name
28 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository75 other files it gives its agents.
- AGENTS.mdAGENTS.md
- agentsSkill
- android-connectivitySkill
- android-devSkill
- android-mediaSkill
- android-performanceSkill
- anti-hallucinationSkill
- blue-teamingSkill
- bug-huntingSkill
- cdnSkill
- ci-securitySkill
- contextSkill
- coolifySkill
- dep-versionsSkill
- devopsSkill
- devsecopsSkill
- dockerSkill
- electronSkill
- firecrackerSkill
- gatewaySkill
- ghSkill
- goSkill
- i18nSkill
- k3sSkill
- lxmfSkill
- lxmfySkill
- mcp-toolkitSkill
- media-stackSkill
- mediawikiSkill
- memorySkill
- meshchatxSkill
- mesh-vpnSkill
- micronSkill
- microservices-haSkill
- nebulaSkill
- no-slopSkill
- no-trickerySkill
- opensubsonicSkill
- osintSkill
- owaspSkill
- pnpmSkill
- podmanSkill
- project-scaffoldSkill
- python-packagingSkill
- qaSkill
- releaseSkill
- research-methodsSkill
- reticulum-goSkill
- reticulumSkill
- rngitSkill
- rnsSkill
- sastSkill
- shipped-textSkill
- stylometrySkill
- surrealdb-cliSkill
- surrealdb-docsSkill
- surrealdb-jsSkill
- surrealdb-pythonSkill
- surrealdbSkill
- surrealdb-vectorSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 1 is distinctive, and 5 are very specific to this project.
0
Common
Most of the 31 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 23
Read this file for the edition model and the Rust 2024 change list.
- Very specific: line 24
Read references/edition-2024.md for per-change before/after migration examples.
- Very specific: line 69
Match ergonomics restrictions: when the default binding mode is not move (scrutinee matched by reference), bindings may not declare mut, …
- Very specific: line 100
Never type fallback: never-to-any coercions fall back to !
- Very specific: line 126
Use the hyphenated/[package] forms.
- Very specific: line 155
Not edition-gated but landed around the same window and often conflated with 2024: async closures async |x| {} (1.85), #[diagnostic] …
“Common” is measured: kept by at least 6 in 10 of the 31 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
When to use this skill
- You are choosing or bumping
editionin Cargo.toml, or migrating a crate to Rust 2024. - Code fails to compile after an edition bump and you need the actual rule change, not a guess.
- You need current toolchain facts: stable is 1.99.x (October 2026), Rust 2024 was released in 1.85.0.
How to use
- Read this file for the edition model and the Rust 2024 change list.
- Read
references/edition-2024.mdfor per-change before/after migration examples. - Migrate with
cargo fix --editionon a clean tree, then build and review the lint output.
Examples
- "Bump this crate to edition 2024 and fix the fallout."
- "Why does this
impl Iteratornow complain about a captured lifetime?" - "Is
letchaining usable on stable yet?"
Rust editions and the 2024 edition
Editions are opt-in per package via edition = "..." in Cargo.toml.
They let rustc make small breaking changes while old crates keep
compiling. Editions so far: 2015, 2018, 2021, 2024. Edition is per
package, not per workspace; dependencies on other editions link fine.
rust-version (MSRV) is orthogonal: it states the minimum toolchain,
not the language dialect.
Current state (October 2026): stable is rustc 1.99.0. Rust 2024
shipped in 1.85.0 (February 2025). cargo new defaults to 2024.
There is no Rust 2027 yet; a 2027 edition is not announced.
Rust 2024 language changes
Breaking changes and behavior shifts, grouped by how often they bite in real code.
High-impact:
- RPIT/impl-Trait lifetime capture:
impl Traitreturn types now capture ALL in-scope lifetimes by default. Previously lifetimes had to be named in the bound (+ 'a). Code that relied on non-capture now needs+ use<..>precise capturing, and theCaptures/outlives tricks are obsolete. Most common edition-2024 breakage. - Tail expression temporary scope: temporaries in the tail
expression of a block, function, or closure may drop BEFORE local
variables, not after. Code relying on the old order (a MutexGuard in
the tail expr while a local is read by a Drop impl) can deadlock or
UB-observe changes; the
tail_expr_drop_orderlint flags it. - if-let temporary scope: temporaries in an
if letscrutinee drop before the else branch runs, instead of after the whole expression.if let Ok(x) = lock.read() else { .. }no longer holds the lock in the else arm. - Match ergonomics restrictions: when the default binding mode is
not
move(scrutinee matched by reference), bindings may not declaremut,ref, orref mut, and&/&mutpatterns can only appear before a binding-mode shift. Fix by matching explicitly or binding by value. Hard error in 2024. static mutreferences denied: taking&/&mutto astatic mutis a deny-by-defaultstatic_mut_refserror in 2024. Migrate toUnsafeCell/SyncUnsafeCelloraddr_of_mut!.
Safety surface tightening:
unsafe externblocks:extern "C" { .. }must be writtenunsafe extern "C" { .. }, since declaring an item is itself unsafe.- Unsafe attributes:
no_mangle,export_name,link_sectionmust be written#[unsafe(no_mangle)]etc. unsafe_op_in_unsafe_fnwarns by default: unsafe ops inside anunsafe fnbody need explicitunsafe { }blocks.
New capability:
letchains:if let A = x && let B = y { }and the same inwhile. Edition-gated to 2024+ becauseletin condition position needed a grammar carve-out.genkeyword reserved:genidentifiers needr#gen. Reserves space for gen blocks (still unstable) and the future generators feature.genblocks do not exist on stable yet.- Reserved syntax: unprefixed
#"foo"#guarded strings and runs of 2+#are reserved for future use.
Type inference / macros:
- Never type fallback: never-to-any coercions fall back to
!instead of(). Was edition-2024-only. Since Rust 1.100 (beta as of October 2026) it applies on all editions and the migration lint is gone. exprmacro fragment now also matchesconst { }blocks and_underscore expressions;expr_2021preserves the old match set.missing_fragment_specifieris a hard error: bare$xinmacro_rules!must have a specifier.
Standard library changes
- Prelude gains
FutureandIntoFuture. Custom traits namedFutureor a method.into_future()can become ambiguous. Box<[T]>implementsIntoIteratorin all editions, butboxed.into_iter()only resolves to it in 2024+. Earlier editions keep autoref'ing to a slice iterator. A real silent-behavior change.- Newly
unsafe fn:std::env::set_var,std::env::remove_var, andCommandExt::before_exec. Treat process env mutation as unsafe because of shared-state races with threads.
Cargo changes
edition = "2024"impliesresolver = "3": the version-aware feature resolver prefers the latest compatible dep versions.- Removed duplicate Cargo.toml keys:
[project],default_features,crate_type,proc_macro,dev_dependencies,build_dependencies. Use the hyphenated/[package]forms. - Since Rust 1.99,
default-featureson an inherited dep in a 2024 package overrides the[workspace.dependencies]value instead of erroring.
Rustdoc and rustfmt
- Doctests are merged into a single binary per crate (much faster). Doctests that relied on separate binaries may need attention.
include_str!'d doctests resolve nestedinclude!/include_str!relative to the Markdown file, not the Rust source.style_edition = "2024"in rustfmt.toml applies the new formatting style independently of the code edition. Raw identifiers sort ignoringr#, andVersionsorting changed; check diffs before mass-reformatting.
Migration workflow
- On stable:
cargo fix --editionapplies therust-2024-compatibilitylint group and auto-fixes what it can (needs a clean git tree). - Set
edition = "2024", runcargo buildandcargo test. - Review remaining warnings manually; the dangerous ones are the
silent drop-order changes (tail expr, if-let scrutinee) and
Box<[T]>::into_iter. - CI: pin with
rust-toolchain.tomlchannel = "1.85"or later; usechannel = "stable"for rolling.
Adjacent stabilized features worth knowing
Not edition-gated but landed around the same window and often
conflated with 2024: async closures async |x| {} (1.85), #[diagnostic]
attributes for custom error messages (1.78), use<..> precise
capturing syntax itself (usable on all editions since 1.82).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

