feat(tokio-util): Add CancellationTokenWithReason #6453
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.
Motivation
#5249
I wanted a way to propagate a reason to the tasks I am cancelling, eg whether it was via a timeout, or via a termination. As the issue states, Go's context.Context has a WithCancelCause feature that is similar.
For now I am making this as a third party crate, but I felt it was easy enough to suggest upstream. Feel free to bikeshed or reject.
Solution
cancellation_token/tree_node.rs
generic over the cancel reason. Replaceis_cancelled: bool
withcancelled: Option<T>
.cancellation_token.rs
tocancellation_token_with_reason.rs
and make the necessary changes to support the reason.