Capture String Panic Messages
#962
Merged
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.
📬 Issue #, if available:
N/A
✍️ Description of changes:
This is something I noticed from reading the code, but not a behavior that I have directly observed.
The panic layer contains the following code for extracting a message from a panic:
I believe that this will lose the message when the panic payload is not an
&str.Consider the following example:
This prints:
If this were to happen in lambda code I believe that only the second case would be correctly handled by the panic layer.
In the most typical case of
panic!("message"), the payload will be an&'static str, but if formatting is used you will get aStringinstead, which can not be extracted via.downcast_ref<&str>(). Moreover, the panic payload can be any arbitrary type conforming to'static + Any + Send, viapanic_any(), although this is rare and there isn't much that can be done in this case anyway.By adding an additional branch to downcast to
String, we ensure that we capture the error message in most cases. This also better aligns us with the standard library's implementation.🔏 By submitting this pull request
cargo +nightly fmt.cargo clippy --fix.