|0.1.1||Dec 24, 2022|
|0.1.0||Dec 22, 2022|
#15 in #track
Used in cset
Fine-grained and reversible struct transactions.
This crate offers a Track macro that structs can derive to generate the plumbing needed to precisely track changes to fields. Calling
Trackable::edit() returns a
Draft that stores edits separately from the underyling struct, such that no values are written.
.commit() is called on the draft, edits are applied to the base struct. Each replaced value is returned to the caller as a
Change in a
ChangeSet. This changeset can then be re-applied to a struct of the same type, which replaces fields with values from the
ChangeSet. This operation produces a new
ChangeSet, allowing for the implementation of an undo-redo paradigm.
This project is early in development and API changes should be expected.