[dependencies]
serde = { version = "1.0", features = ["derive"] }
[dev-dependencies]
tokio-test = "0.4"
[build-dependencies]
cc = "1.0"
[profile.dev]
opt-level = 0
debug = true
[workspace.package]
version = "0.1.0"
edition = "2021"
license = "MIT"
[workspace.dependencies]
serde = "1.0"
tokio = { version = "1", features = ["full"] }
[dependencies]
serde.workspace = true
Or in clippy.toml
msrv = "1.70"
cognitive-complexity-threshold = 25
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: rust-ecosystem3description: This skill should be used when working with Rust projects, "Cargo.toml", "rustc", "cargo build/test/run", "clippy", "rustfmt", or Rust language patterns. Provides comprehensive Rust ecosystem patterns and best practices. Use when this capability is needed.4---56<purpose>7Provide comprehensive patterns for Rust language, Cargo project management, and toolchain configuration.8</purpose>910<rust_language>11<ownership_borrowing>12<concept name="ownership">13<description>Each value has exactly one owner. When owner goes out of scope, value is dropped.</description>14<use>Use move semantics by default; explicit Clone when needed</use>15</concept>1617<concept name="borrowing">18<description>Immutable and mutable references with strict rules</description>19<rules priority="critical">20<rule>&T allows multiple simultaneous borrows</rule>21<rule>&mut T allows exactly one mutable borrow</rule>22<rule>Cannot have &mut T while &T exists</rule>23</rules>24</concept>2526<concept name="lifetimes">27<description>Lifetime annotations for reference validity</description>28<pattern name="elision">29<description>Compiler infers lifetimes in common patterns</description>30</pattern>31<pattern name="explicit">32<description>Explicit lifetime annotations for complex cases</description>33<example>34fn foo<'a>(x: &'a str) -> &'a str {35 x36}37</example>38</pattern>39<pattern name="static">40<description>'static for values that live entire program</description>41</pattern>42</concept>43</ownership_borrowing>4445<traits>46<common_traits>47<trait name="Clone">Explicit duplication with .clone()</trait>48<trait name="Copy">Implicit bitwise copy for simple types</trait>49<trait name="Debug">Debug formatting with {:?}</trait>50<trait name="Display">User-facing formatting with {}</trait>51<trait name="Default">Default value construction</trait>52<trait name="PartialEq/Eq">Equality comparison</trait>53<trait name="PartialOrd/Ord">Ordering comparison</trait>54<trait name="Hash">Hashing for HashMap/HashSet keys</trait>55<trait name="From/Into">Type conversions</trait>56<trait name="AsRef/AsMut">Cheap reference conversions</trait>57</common_traits>5859<pattern name="derive">60<description>Automatically implement common traits</description>61<example>62#[derive(Debug, Clone, PartialEq, Eq, Hash)]63struct MyType {64 field1: String,65 field2: i32,66}67</example>68</pattern>69</traits>7071<error_handling>72<pattern name="Result">73<description>Recoverable errors with Result with T and E type parameters</description>74<operators>? for early return on Err</operators>75<combinators>map, and_then, unwrap_or, unwrap_or_else</combinators>76</pattern>7778<pattern name="Option">79<description>Optional values with Option with T type parameter</description>80<operators>? for early return on None</operators>81<combinators>map, and_then, unwrap_or, unwrap_or_default</combinators>82</pattern>8384<pattern name="custom_error">85<description>Define custom error types with thiserror or anyhow</description>86<example>87#[derive(Debug, thiserror::Error)]88enum MyError {89 #[error("IO error: {0}")]90 Io(#[from] std::io::Error),91 #[error("Parse error: {msg}")]92 Parse { msg: String },93}94</example>95</pattern>96</error_handling>9798<common_patterns>99<pattern name="builder">100<description>Fluent API for complex object construction</description>101<example>102MyStruct::builder()103.field1(value1)104.field2(value2)105.build()106</example>107</pattern>108109<pattern name="newtype">110<description>Wrapper type for type safety</description>111<example>112struct UserId(u64);113</example>114</pattern>115116<pattern name="type_state">117<description>Encode state in type system</description>118<use_case>Prevent invalid state transitions at compile time</use_case>119</pattern>120</common_patterns>121122<anti_patterns>123<avoid name="unwrap_in_library">124<description>Using unwrap() in library code</description>125<instead>Use ? or proper error handling instead</instead>126</avoid>127128<avoid name="clone_abuse">129<description>Cloning values unnecessarily</description>130<instead>Prefer borrowing when possible</instead>131</avoid>132133<avoid name="string_for_everything">134<description>Using String for all domain values</description>135<instead>Use enums, newtypes for domain modeling</instead>136</avoid>137138<avoid name="arc_mutex_overuse">139<description>Defaulting to Arc with Mutex with T for concurrency</description>140<instead>Consider channels or ownership patterns first</instead>141</avoid>142</anti_patterns>143</rust_language>144145<cargo>146<project_structure>147<standard_layout>148.149├── Cargo.lock150├── Cargo.toml151├── src/152│ ├── lib.rs # Library crate root153│ ├── main.rs # Binary crate root154│ └── bin/ # Additional binaries155├── tests/ # Integration tests156├── benches/ # Benchmarks157└── examples/ # Example code158</standard_layout>159160<module_organization>161<pattern name="mod_rs">162<description>src/module/mod.rs with submodules</description>163</pattern>164<pattern name="file_module">165<description>src/module.rs (preferred for simple modules)</description>166</pattern>167</module_organization>168</project_structure>169170<cargo_toml>171<basic_structure>172[package]173name = "my-crate"174version = "0.1.0"175edition = "2021" # Current edition; edition 2024 (upcoming/future)176rust-version = "1.83" # Current stable as of Dec 2025177178[dependencies]179serde = { version = "1.0", features = ["derive"] }180181[dev-dependencies]182tokio-test = "0.4"183184[build-dependencies]185cc = "1.0"186</basic_structure>187188<feature_flags>189[features]190default = ["std"]191std = []192async = ["tokio"]193full = ["std", "async"]194</feature_flags>195196<profile_optimization>197[profile.release]198lto = true199codegen-units = 1200panic = "abort"201strip = true202203[profile.dev]204opt-level = 0205debug = true206</profile_optimization>207</cargo_toml>208209<workspace>210<root_cargo_toml>211[workspace]212resolver = "2" # Current default for edition 2021; resolver 3 (upcoming, requires Edition 2024)213members = ["crate-a", "crate-b"]214215[workspace.package]216version = "0.1.0"217edition = "2021"218license = "MIT"219220[workspace.dependencies]221serde = "1.0"222tokio = { version = "1", features = ["full"] }223</root_cargo_toml>224225<member_inheritance>226[package]227name = "crate-a"228version.workspace = true229edition.workspace = true230231[dependencies]232serde.workspace = true233</member_inheritance>234</workspace>235236<commands>237<command name="cargo build">Compile the project</command>238<command name="cargo build --release">Compile with optimizations</command>239<command name="cargo run">Build and run binary</command>240<command name="cargo test">Run all tests</command>241<command name="cargo check">Fast syntax/type check without codegen</command>242<command name="cargo doc --open">Generate and open documentation</command>243<command name="cargo update">Update dependencies</command>244<command name="cargo tree">Display dependency tree</command>245</commands>246</cargo>247248<toolchain>249<clippy>250<description>Rust linter for catching common mistakes and improving code</description>251<usage>cargo clippy -- -D warnings</usage>252253<configuration>254<file_reference>In Cargo.toml</file_reference>255[lints.clippy]256pedantic = "warn"257nursery = "warn"258unwrap_used = "deny"259expect_used = "deny"260261<file_reference>Or in clippy.toml</file_reference>262263msrv = "1.70"264cognitive-complexity-threshold = 25265</configuration>266267<common_lints>268<lint name="clippy::unwrap_used">Prefer ? or proper error handling</lint>269<lint name="clippy::expect_used">Prefer ? or proper error handling</lint>270<lint name="clippy::pedantic">Stricter lints for cleaner code</lint>271<lint name="clippy::nursery">Experimental but useful lints</lint>272</common_lints>273</clippy>274275<rustfmt>276<description>Automatic code formatter</description>277<usage>cargo fmt</usage>278279<configuration>280<file_reference>rustfmt.toml</file_reference>281edition = "2021"282max_width = 100283use_small_heuristics = "Max"284imports_granularity = "Crate"285group_imports = "StdExternalCrate"286reorder_imports = true287</configuration>288</rustfmt>289290<cargo_nextest>291<description>Next-generation test runner with better output and parallelism</description>292<usage>cargo nextest run</usage>293294<features>295<feature>Parallel test execution</feature>296<feature>Better failure output</feature>297<feature>JUnit XML output for CI</feature>298<feature>Test retries</feature>299</features>300301<configuration>302<file_reference>.config/nextest.toml</file_reference>303[profile.default]304retries = 2305slow-timeout = { period = "60s", terminate-after = 2 }306fail-fast = false307</configuration>308</cargo_nextest>309310<other_tools>311<tool name="cargo-audit">312<description>Security vulnerability scanning</description>313</tool>314<tool name="cargo-deny">315<description>Dependency license and security checks</description>316</tool>317<tool name="cargo-outdated">318<description>Check for outdated dependencies</description>319</tool>320<tool name="cargo-watch">321<description>Auto-rebuild on file changes</description>322</tool>323<tool name="cargo-expand">324<description>Macro expansion debugging</description>325</tool>326</other_tools>327</toolchain>328329<context7_integration>330<description>Use Context7 MCP for up-to-date Rust documentation</description>331332<rust_libraries>333<library name="The Rust Book" id="/rust-lang/book" />334<library name="Cargo" id="/rust-lang/cargo.git" />335<library name="Rust Clippy" id="/rust-lang/rust-clippy" />336<library name="Rustfmt" id="/rust-lang/rustfmt" />337<library name="Rust Reference" id="/rust-lang/reference.git" />338<library name="Rust by Example" id="/rust-lang/rust-by-example.git" />339<library name="cargo-nextest" id="/websites/nexte_st" />340</rust_libraries>341342<usage_patterns>343<pattern name="language_reference">344<step>resolve-library-id libraryName="rust lang"</step>345<step>get-library-docs context7CompatibleLibraryID="/rust-lang/book" topic="ownership"</step>346</pattern>347348<pattern name="cargo_configuration">349<step>get-library-docs context7CompatibleLibraryID="/rust-lang/cargo.git" topic="workspace"</step>350</pattern>351352<pattern name="clippy_lints">353<step>get-library-docs context7CompatibleLibraryID="/rust-lang/rust-clippy" topic="lints configuration"</step>354</pattern>355</usage_patterns>356</context7_integration>357358<best_practices>359<practice priority="critical">Use cargo check for fast iteration during development</practice>360<practice priority="critical">Run cargo clippy before committing</practice>361<practice priority="critical">Format with cargo fmt for consistent style</practice>362<practice priority="high">Use workspace for multi-crate projects</practice>363<practice priority="high">Prefer &str over String for function parameters</practice>364<practice priority="high">Use impl Trait for return types when possible</practice>365<practice priority="medium">Document public API with /// doc comments</practice>366<practice priority="medium">Write unit tests alongside code in same file</practice>367<practice priority="medium">Use integration tests in tests/ for API testing</practice>368<practice priority="medium">Set rust-version in Cargo.toml for MSRV</practice>369</best_practices>370371---372> Converted and distributed by [TomeVault](https://tomevault.io/claim/mtaku3) — claim your Tome and manage your conversions.373<!-- tomevault:4.0:skill_md:2026-04-13 -->