[package] name = "rdbms-playground" version = "0.1.0" edition = "2024" description = "A cross-platform TUI playground for learning relational databases." license = "MIT OR Apache-2.0" repository = "https://git.lazyeval.net/oli/rdbms-playground" readme = "README.md" publish = false [dependencies] anyhow = "1.0.102" # Native system-clipboard for the `copy` command (ADR-0041). Text # only: `default-features = false` drops the heavy `image` crate. On # Linux this is X11-only — `wayland-data-control` is deliberately # omitted (it ~doubles the dep tree), as OSC 52 covers native-Wayland # sessions and XWayland covers the rest. arboard = { version = "3.6.1", default-features = false } base64 = "0.22.1" # `clock` brings local-timezone support (UTC → machine local) for # the undo-dialog snapshot timestamp (issue #13). No locale feature: # month names stay English; `unstable-locales` is deliberately avoided. chrono = { version = "0.4.44", default-features = false, features = ["clock"] } crossterm = { version = "0.29.0", features = ["event-stream"] } csv = "1.4.0" directories = "6.0.0" futures-util = "0.3.32" gethostname = "1.1.0" rand = "0.10.1" ratatui = "0.30.0" rusqlite = { version = "0.39.0", features = ["backup", "bundled", "column_metadata"] } serde = { version = "1.0.228", features = ["derive"] } # Maintained fork of `serde_yaml` (the deprecated original). Replaces # `serde_yml`, which was archived as unsound + unmaintained # (RUSTSEC-2025-0068, and its `libyml` backend RUSTSEC-2025-0067). serde_norway = "0.9.42" sysinfo = { version = "0.39.0", default-features = false, features = ["system"] } tokio = { version = "1.52.2", features = ["full"] } tracing = "0.1.44" tracing-subscriber = { version = "0.3.23", features = ["env-filter"] } zip = { version = "5.1.1", default-features = false, features = ["deflate"] } [dev-dependencies] insta = { version = "1.47.2", features = ["yaml"] } pretty_assertions = "1.4.1" tempfile = "3.27.0" # Dev/test build hygiene (see CLAUDE.md "Build hygiene"). `cargo test` # links ~25 separate integration-test binaries, each statically # embedding the bundled engine + every dependency; the `test` profile # inherits these from `dev`. # - incremental = false: the incremental cache reached 16 GB here for # little benefit in a full-suite workflow; disabling it keeps target/ # bounded. # - debug = "line-tables-only": full debug info (the default `debug = 2`) # is ~85-90% of each test binary; line tables keep file:line in panics # and backtraces (we debug via `tracing` logs, not a step-debugger) at # a fraction of the size. [profile.dev] incremental = false debug = "line-tables-only" [lints.rust] unsafe_code = "forbid" unreachable_pub = "warn" [lints.clippy] all = { level = "warn", priority = -1 } nursery = { level = "warn", priority = -1 } # Allow common false-positives that don't materially improve our code. module_name_repetitions = "allow" missing_errors_doc = "allow" missing_panics_doc = "allow"