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.
This branches off #2054 so that needs to be merged first
Problem
generic-array
is an annoying dependency that is quite avoidable. We can avoid it by hand rolling the serde impls forSignature
, or by using theserde_with
orserde-big-array
crates.This PR hand rolls the serde impls by closely mimicking what generic-array does (but without the generic stuff). The advantage of this approach is that we should have the same behaviour and performance as before. The disadvantage of this approach is I cargo culted it somewhat so it would be good for someone to look over the unsafe code.
It's possible that serde_with or serde-big-array are better solutions but I haven't investigated the performance or if they differ in any edge cases. I did try
serde_bytes
and saw that it serialized differently when usingshort_vec
, so the serialization is not trivial.Summary of Changes
GenericArray<u8, U64>
with[u8; 64]
generic-array