A utility class for implementing "snapshottable" things; a snapshottable data structure permits
you to take a snapshot (via start_snapshot
) and then, after making some changes, elect either
to rollback to the start of the snapshot or commit those changes.
This vector is intended to be used as part of an abstraction, not serve as a complete
abstraction on its own. As such, while it will roll back most changes on its own, it also
supports a get_mut
operation that gives you an arbitrary mutable pointer into the vector. To
ensure that any changes you make this with this pointer are rolled back, you must invoke
record
to record any changes you make and also supplying a delegate capable of reversing
those changes.