tvl-depot/users/tazjin/finito/README.md
Vincent Ambo 9e7b81391d feat(tazjin/finito): Check in my old Rust state-machine library
I dug through my archives for this and found a version that, while
unfortunately not the latest implementation, is close enough to the
real thing to show off what Finito did.

This is a Postgres-backed state-machine library for complex
application logic. I wrote this originally for a work purpose in a
previous life, but have always wanted to apply it elsewhere, too.

git-subtree-dir: users/tazjin/finito
git-subtree-mainline: 0380841eb1
git-subtree-split: b748117225
Change-Id: I0de02d6258568447a14870f1a533812a67127763
2020-06-30 04:35:58 +01:00

1,020 B

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.