1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//! The [P modeling language](https://p-org.github.io/P/) in Rust.
//!
//! Application code emits events with [`emit`]; tests check them against P specs, in
//! process, with [`test`](mod@test); the `snappea` binary checks P models and production logs.
//!
//! | Feature | Enables |
//! | --- | --- |
//! | `emit` | [`emit`] only: no checker, depends only on `serde` and `serde_json`. For production code. |
//! | `test` (default) | [`test`](mod@test), plus `emit` and the checker library |
//! | `cli` (default) | the `snappea` and `snappea-compat` binaries, and the checker library |
//!
//! Production code that only emits:
//!
//! ```toml
//! [dependencies]
//! snappea = { version = "0.1", default-features = false, features = ["emit"] }
//!
//! [dev-dependencies]
//! snappea = { version = "0.1", default-features = false, features = ["test"] }
//! ```
//!
//! The checker library is [`syntax`] (parser), [`sema`] (type checker), [`checker`]
//! (systematic testing and log checking), [`project`] (`.pproj` files and P sources),
//! [`driver`] (the check and observe commands, over a [`host`]) and [`compat`] (upstream
//! P's command line on top of [`driver`]).
//! See `docs/library.md` in the repository.