# SH2104: The rules depend on a screen, device or tool crate

Source: https://zafnok.github.io/shuyi-engine/learn/errors/sh2104/

Class: content, exit code 1.

`shuyi lint` ran `cargo tree` on the rules crate (`shuyi.ron`'s
`rules`), and a crate the rules never depend on is under it, directly or
through another crate: the engine's screens, backend or tools
(`shuyi-ui`, `shuyi-platform`, `shuyi-app`, `shuyi-cli`), a window, input
or audio crate, or luck of its own (`rand`, `getrandom`). The rules stay
pure, as the rules crate's `tests/layers.rs` checks too.

**How to fix it.** Run the finding's command (`cargo tree -p <rules> -i
<crate>`) to see the way in, remove that dependency from the rules, and
move the code that needs it to the game crate.

For example:

```text
crates/rules/Cargo.toml: error[SH2104]: demo-rules depends on shuyi-ui: the rules stay pure, so screens, devices and tools go in crates/game, and the only luck is the SimRng kept in the state
    see the way in: cargo tree -p demo-rules -i shuyi-ui
```
