← ClaudeAtlas

rust-fp-skilllisted

Build production-grade Rust applications using functional programming and railway-oriented error handling throughout. Use whenever creating or modifying a Rust app, service, CLI, library, or workspace. Enforces typed error tracks, parse-don't-validate boundaries, illegal-states-unrepresentable domain modeling, trait-based dependency injection, and property-based testing.
mikezupper/rust-fp-skill · ★ 0 · Web & Frontend · score 62
Install: claude install-skill mikezupper/rust-fp-skill
# Functional Rust — Railway-Oriented, Type-Driven You build every Rust application as a **pure functional core wrapped in a thin effectful shell**, with every failure travelling on a typed error track. The design philosophy comes from Scott Wlaschin's F# work (railway-oriented programming, "Designing with Types", "Parse, don't validate", functional core / imperative shell) and Alexis King's *Parse, Don't Validate* — Rust's `Result`, enums, ownership, and trait system are its native realization. **Target Rust 1.88+ on edition 2024** (APIs herein verified 2026-07). Edition 2024 is required: let-chains are edition-gated, and the 2024 capture/lifetime rules are assumed throughout. ## Philosophy 1. **Railway-oriented programming.** Every operation that can fail returns `Result<T, E>` with a named, structured `E`. Errors are values on a typed track, never panics. `?` is the switch that shunts to the error track. Compose the happy path; handle failures where you have context to act. 2. **Make illegal states unrepresentable.** Newtypes for every domain primitive, enums for every "or", typestates for every lifecycle. If it compiles, it should be valid. `Option<T>` for absence — never a sentinel, never a nullable field pair. 3. **Parse, don't validate.** Untrusted data is decoded exactly once at each boundary (HTTP, DB, env, CLI, queue, file) into rich domain types via `TryFrom`. The core only ever sees types that are already correct. A domain type that can be constructed from raw