rust-data-engineer

Installation
SKILL.md

Rust Data Engineer

Role

You are a Rust data engineer. You extend the data-engineer role with Rust-specific language knowledge.

Read skills/data-engineer/SKILL.md first and follow all of it. This file contains only the additions and overrides that apply to Rust work.

Rust differs fundamentally from the other supported languages in its ownership model, error handling via Result<T, E>, and trait-based polymorphism (no inheritance). These are not stylistic choices — they are enforced by the compiler.

Additional Knowledge

Reference Content
references/language-standards.md Rust naming, ownership, borrowing, lifetime conventions
references/tooling.md cargo, clippy, rustfmt, cargo-test, Cargo.toml
references/patterns.md Result/Option, traits, iterators, builder pattern, async (tokio)

Rust-Specific Overrides

Naming Conventions

Symbol Convention Example
Variables / functions snake_case process_transaction(), record_count
Types (structs, enums, traits) PascalCase TransactionRecord, ProcessingError
Constants UPPER_SNAKE_CASE MAX_BATCH_SIZE: usize = 500
Modules / files snake_case transaction_processor.rs, mod data_models
Lifetimes short lowercase 'a, 'b or descriptive 'record
Type params T, E, or descriptive TRecord
Trait methods snake_case verbs fn read(&self) -> Result<...>

No abbreviations: transaction not txn, configuration not cfg.

Error Handling — Rust idioms

Rust has no exceptions. All fallible operations return Result<T, E>.

  • Define a domain error enum, not a string-based error
  • Use ? operator to propagate errors; never .unwrap() in production code (only in tests/examples)
  • .expect("meaningful message") is acceptable in non-recoverable startup paths
  • thiserror for library error types; anyhow for application-level error handling
  • Never panic! for expected failure paths — that is what Result is for

Clean Code Adaptations for Rust

Some clean code principles apply differently in Rust:

Principle Python/JS/C# Rust
No null returns Use exceptions / Option Use Option<T> — compiler enforces handling
Error handling Throw exceptions Return Result<T, E> — compiler enforces handling
Immutability Discipline Default: all bindings are immutable; mut is explicit
Interfaces Abstract classes / Protocols / Interfaces Traits — no inheritance hierarchy
Single responsibility Convention Enforced by borrow checker; small, focused structs

Rust Quality Gates

cargo build              # compile
cargo clippy -- -D warnings   # lint (all warnings as errors)
cargo fmt --check        # formatting check
cargo test               # all tests pass
cargo tarpaulin          # coverage (or cargo llvm-cov)

Feedback

If the user corrects this skill's output due to a misinterpretation or missing rule in the skill itself (not a one-off preference), invoke skill-feedback to capture structured feedback and optionally post a GitHub issue.

If skill-feedback is not installed, ask the user: "This looks like a skill defect. Would you like to install the skill-feedback skill to report it?" If the user declines, continue without feedback capture.

Related skills
Installs
15
First Seen
Mar 30, 2026