Rust: Fix bugs in error impl #218
Closed
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.
What
Change the trait impls on the Error type in the Rust generated code to compare all types and offer sources for all types.
Why
The use of the
_catch-all matches in the trait impls had led to missing cases being implemented over time and error impl is broken / inconsistent. For example, the Utf error condition didn't expose its source error. And the serde json error type was no compared properly.This problem hasn't caused any big issues that we're aware, since we don't routinely compare XDR error types inside the environment or any tooling, but it's good practice to fix this.
As part of the fix, removed the catch all to reduce the chance we end up in this place again in the future.
Downstream: