about summary refs log tree commit diff
path: root/users/tazjin/finito/README.md
blob: 5acd67d3bea72a138c55eee8210c50435e6c2240 (plain) (blame)
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
Finito
======

This is a Rust port of the Haskell state-machine library Finito. It is
slightly less featureful because it loses the ability to ensure that
side-effects are contained and because of a slight reduction in
expressivity, which makes it a bit more restrictive.

However, it still implements the FSM model well enough.

# Components

Finito is split up into multiple independent components (note: not all
of these exist yet), separating functionality related to FSM
persistence from other things.

* `finito`: Core abstraction implemented by Finito
* `finito-door`: Example implementation of a simple, lockable door
* `finito-postgres`: Persistent state-machines using Postgres

**Note**: The `finito` core library does not contain any tests. Its
coverage is instead provided by the `finito-door` library, which
actually implements an example FSM.

These are split out because the documentation for `finito-door` is
interesting regardless and because other Finito packages also need an
example implementation.