Change semantics to avoid duplicate code in expanded output #2
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.
This uses an
Option<?>
to store the result instead of first computing the value, then double-expanding the wrapped function's block of code inside the loop.The only side effect of this approach is the possibility of a panic, and that
max_retries
in the configuration is now more likemax_attempts
ormax_tries
, since the loop encompasses the first attempt. If that change is fine, I'll rename it more appropriately. Functionally it's gone from describing "retry at most X times", to "attempt at most X times". I'm indifferent to either way, but it just needs to be named correctly and documented.Otherwise this adds a few tests for cases that came up with real use-cases of mine that the test suite wasn't covering, and a test to show the panic for a backoff that has <= 0 for the
max_retries
value.Without dumping the entire expanded output, the following code expands like this: