GridAab
& Vol
split
#489
Labels
area: data
Things related to the data structures underlying the world, and the functions that manipulate them.
kind: feature
Adding user-facing/developer-facing functionality
GridAab
, the type of axis-aligned boxes withi32
coordinates, has a volume limit: noGridAab
may have a total volume (or number of enclosed cubes) greater thanusize::MAX
, so that everyGridAab
may correspond to a linearization into a vector.This has proven more inconvenient than helpful, because all operations that might construct a larger
GridAab
have to be fallible, but the volume limit is irrelevant to most of those operations. Therefore, I am splitting it into two types:GridAab
will become an arbitrary axis-aligned box. It will no longer have a volume limit, and also will not have any operations related to linearization (other than, maybe, iteration).Vol
, which is primarily a container for volume data, can also have no data but still only exist when the volume limit is satisfied, thus serving as a “volume-checkedGridAab
”.History and remaining tasks:
Vol
— commit 1128553GridAab::index()
— commit d3ba1e7GridAab::volume()
fallible — commit ac68eccGridAab
— especially.interior_iter()
— care about volume.GridAab
volume limit — commit 62bc45eGridAab
methods to be infallible where that is now possible — commit e373374The text was updated successfully, but these errors were encountered: