fix(time-style): cryptic panic with invalid --time-syle format string #1282
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.
Fixes: #1240
Validate --time-style format string during option parsing.
That format string is later given to chrono via
DateTime.format(fmt).to_string()
.ToString
is implemented forT: Display
in std but panics ifDisplay::fmt
returns an error, and the object returned byDateTime.format
(StrftimeItems
) lazily returns an error inDisplay::fmt
when it finally sees something invalid in the format string. This is also done inside a rayon threadpool so the resulting panic has little context for users.The fix is to create a dummy
StrftimeItems
and iterate over it for errors to validate the format string beforehand.