SuperAPI AI Directory

rust-data-engineer

Data & analytics

View repository

Updated 10-16 02:39

About this skill

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)