feat: derive Eq and Hash trait for messages where possible#1175
Merged
caspermeijn merged 1 commit intotokio-rs:masterfrom Feb 12, 2025
Merged
feat: derive Eq and Hash trait for messages where possible#1175caspermeijn merged 1 commit intotokio-rs:masterfrom
caspermeijn merged 1 commit intotokio-rs:masterfrom
Conversation
3562a58 to
5034001
Compare
5034001 to
cca8bdd
Compare
LucioFranco
approved these changes
Nov 15, 2024
Member
LucioFranco
left a comment
There was a problem hiding this comment.
LGTM, would it make sense to make these derives optional?
Contributor
Author
I think you mean something like The disadvantage of a skip function is that the complexity is raised in the code generator. |
Member
|
Yeah, I was thinking it may help for those backward compat issues. |
cca8bdd to
4425353
Compare
4425353 to
fa090db
Compare
Integer and bytes types can be compared using trait Eq. Some generated Rust structs can also have this property by deriving the Eq trait. Automatically derive Eq and Hash for: - messages that only have fields with integer or bytes types - messages where all field types also implement Eq and Hash - the Rust enum for one-of fields, where all fields implement Eq and Hash Generated code for Protobuf enums already derives Eq and Hash. BREAKING CHANGE: `prost-build` will automatically derive `trait Eq` and `trait Hash` for types where all field support those as well. If you manually `impl Eq` and/or `impl Hash` for generated types, then you need to remove the manual implementation. If you use `type_attribute` to `derive(Eq)` and/or `derive(Hash)`, then you need to remove those.
fa090db to
2e8c4c0
Compare
This was referenced Apr 11, 2025
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Integer and bytes types can be compared using trait Eq. Some generated Rust structs can also have this property by deriving the Eq trait.
Automatically derive Eq and Hash for:
Generated code for Protobuf enums already derives Eq and Hash.
BREAKING CHANGE:
prost-buildwill automatically derivetrait Eqandtrait Hashfor types where all field support those as well. If you manuallyimpl Eqand/orimpl Hashfor generated types, then you need to remove the manual implementation. If you usetype_attributetoderive(Eq)and/orderive(Hash), then you need to remove those.