Save the data. Obtain a fresh copy of the key afterwards (by reading it again), unless exiting is true.
The currently loaded version of the data.
The key (version) of the last loaded version of the data.
Callable which obtains a new copy of the data.
Callable which (cheaply) obtains the current version of the data.
Callable which saves the data (or None).
When to save the data.
Cache values in-memory, and automatically load/save them as needed via the specified functions. Actual loading/saving is done via alias functions. KeyGetter may return .init (of its return type) if the resource does not yet exist, but once it returns non-.init it may not return .init again. A bool key can be used to load a resource from disk only once (lazily), as is currently done with LoadPolicy.once. Delayed flush policies require a bool key, to avoid mid-air collisions.