SH2103: The rules use what keeps them from being pure and deterministic
Class: content, exit code 1.
shuyi lint ran cargo clippy on the rules crate (shuyi.ron's
rules), and it used something its fence bans (ADR-0032 §4): a hash map,
whose order changes from run to run; a float, which can come out
differently on another machine or the web; the clock; the environment;
a thread; a file; or luck other than the SimRng kept in the state. A
replay of the same commands must play the same everywhere. The rules
crate's clippy.toml gives each ban its reason, and its lib.rs denies
float arithmetic.
How to fix it. Use what the message's reason names: a BTreeMap or
BTreeSet for a hash map, whole numbers (tiles, turns, hundredths) for a
float, a turn count or a value passed in a Command for the time, the
game crate for files, and the state's SimRng for luck.
For example:
crates/rules/src/lib.rs:403:34: error[SH2103]: use of a disallowed type `std::collections::HashMap`: its order changes from run to run, so replays differ: use BTreeMap