Encode expected/actual info in ShapeError #962
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add a (limited) way to add specific information to a ShapeError
Admittedly wonky, but maybe worthwhile.
Result<(), ShapeError> used to be 1 byte, and with this change it
expands to 16 bytes (2 usize on 64-bit).
The remaining 15 bytes are used for optimistically packing as much of
extra info into the error message as possible.
For example we can store expected/actual index for errors (for example
index out of bounds or axis out of bounds, these are not so commonly
handled with ShapeError).
With this change it is supported:
supports storing shapes with one or two bytes (< 256²) per dimension,
with limited ndim.