Simplify fixed decoding in derive macro #40
Merged
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.
Simplifies how we decode a fixed-length struct using the derive macro. My reasoning is:
checked_add
and one bounds check per decoding, which is unlikely to be impactful but it's a nice-to-have.Safety argument
It's clear that
slice
will always be exactly#ssz_fixed_len
.There will be no trailing bytes after all the
split_at
s due to thebytes.len() != <Self as ssz::Decode>::ssz_fixed_len()
at the start of the encoding. This assumes the integrity ofSelf::ssz_fixed_len
, but that's an existing and fair assumption.We will never panic during
split_at
if we uphold the assumption in the previous paragraph.