fix(common): Use zero-copy deserialization when FromStr is implemented #950
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.
We sometimes implement both
FromStr
andserde::Deserialize
. In cases wherewe share the implementation, we provide an explicit definition of
FromStr
anduse macros to implement
serde::Deserialize
.There were two implementations of this macro:
relay_common::impl_str_serialization
relay_general::impl_str_serde
The implementation in
relay_general
allows to implement just deserializationor serialization, but had a bug: It is not zero-copy. Instead, it always
allocates a
String
, only to then parse it.In this PR, we deduplicate the macro and ensure that there are no allocations
when deserializing.
#skip-changelog