pinch_points/lib.rs
1//! Pinch Points: a real-time grid routing puzzler.
2//!
3//! [`sim`] is the headless simulation core and [`app`] the Bevy shell around
4//! it. The simulation is deliberately free of any engine types: plain Rust,
5//! integer-only, and deterministic, so it can be unit-tested, replayed, and
6//! driven over the wire. See `docs/pinch-points-spec.md`.
7//!
8//! There is almost no `unsafe` here and there is not going to be more: the
9//! game is a grid of integers, and the one thing it does with bytes a
10//! stranger wrote, decoding them, is the last place to want manual memory
11//! handling.
12//!
13//! The one exception is [`app::keymap`], where asking Windows and macOS
14//! what the keys say means calling their keyboard APIs: a dozen lines of
15//! FFI with a reason written over each of them. That module allows itself
16//! what this line denies, which is the only way in - `deny` rather than
17//! `forbid` for exactly that reason, and a `#[allow(unsafe_code)]`
18//! anywhere else is a change to argue with, not to wave through.
19#![deny(unsafe_code)]
20
21pub mod app;
22pub mod gif;
23pub mod highlight;
24pub mod lzw;
25pub mod share;
26pub mod sim;
27pub mod transport;