No description
Find a file
Vincent Ambo 40caa5ffa2 feat(postgres): Implement Postgres-backed 'advance' function
Transactionally updates a state machine with an incoming event. Note
that this does not yet interpret actions.
2018-09-26 17:28:45 +02:00
finito-core fix(core): Add missing 'FSM_NAME' associated constant 2018-09-26 16:54:06 +02:00
finito-door fix(core): Add missing 'FSM_NAME' associated constant 2018-09-26 16:54:06 +02:00
finito-postgres feat(postgres): Implement Postgres-backed 'advance' function 2018-09-26 17:28:45 +02:00
.gitignore chore: Add Rust-specific .gitignore file 2018-09-26 11:33:52 +02:00
Cargo.toml feat(postgres): Bootstrap Postgres persistence implementation 2018-09-26 16:54:06 +02:00
README.md docs: Add initial README 2018-09-26 11:34:08 +02:00

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.