fix: don't generate borsh::to_vec
if no borsh traits
#12
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.
The Rust renderer supports a configuration object for determining what traits you'd like to be generated in the
#[derive(..)]
block of each type. However, if you don't includeBorshSerialize
orBorshDeserialize
, the renderer will still useborsh::to_vec
for instructions.This PR changes those
borsh::to_vec
callsites in the generated instructions to instead useself.try_to_vec()
and conditionally implements atry_to_vec
method that calls intoborsh::try_to_vec
if theBorshSerialize
trait is implemented.The use of a wrapper function
try_to_vec
allows developers to implement their owntry_to_vec
as a workaround in case they want to use an alternative serialization method, such as bytemuck. This is current how the generated deserialization code for accounts works accidentally.