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
use *;
/// The four phases of a transition lifecycle.
///
/// Lifecycle: `Exited` → `Entering` → `Entered` →
/// `Exiting` → `Exited` (looping back). The state
/// machine is symmetric on the way in and out — the
/// `Entering` and `Exiting` phases both have a `progress`
/// value in `(0.0, 1.0)`, while `Entered` and `Exited`
/// are terminal resting states (`progress` pinned to
/// `1.0` and `0.0` respectively).
///
/// Phases are public and `Clone + Copy + PartialEq` so
/// consumers can write `match phase { ... }` and dispatch
/// on them without going through the signal indirection
/// every time.
///
/// Note: not deriving `Data` / `New` from lombok because
/// both `Data` and `New` derive macros are only
/// supported for structs (see `UNSUPPORTED_DATA_DERIVE`
/// in lombok-macros 2.0.36). The standard library
/// derives below are sufficient — we don't need
/// getters/setters on the variants.