Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines, development setup, and PR workflow.

Quick reference

All development commands use just. Inside a Nix environment, prefix with nix develop --command.

TaskCommand
Buildjust build
Release buildjust release
Runjust run -- <args>
Testjust test
Type checkjust check
Lint (clippy)just clippy
Formatjust fmt
Format checkjust fmt-check
Full local CIjust ci

Toolchain

  • Rust nightly (pinned in rust-toolchain.toml)
  • Edition 2024, MSRV 1.85
  • Nix dev shell via flake.nix with direnv integration

Code style

  • 100-char width, 4-space indent
  • Imports grouped as std -> external -> crate, sorted alphabetically
  • Trailing commas on multiline
  • Run just fmt before committing

Linting

Clippy warnings are treated as errors (-D warnings). Key constraints:

  • Cognitive complexity threshold: 20
  • Function line limit: 80
  • Function arg limit: 6
  • Banned: std::thread::sleep, std::process::exit, std::env::temp_dir, dbg!, todo!, unimplemented!