RUST-2166 Update convenient transactions API to use async closures #1372
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.
RUST-2166
This adds the slightly-awkwardly-named-but-much-easier-to-use
and_run2
method, and updates almost all* of the callers to use the new method. It also pulls out the method body into a macro so rather than being duplicated across the async and sync (and now new-async) implementations it's shared across all three.* A couple of test operations ran into a rustc bug that mean they don't compile with the new method due to really fun
implementation of 'std::marker::Send' is not general enough
errors, so I left those with the old method. I think it pretty unlikely actual library users will run into this (the trigger condition here is the transaction closure capturing a value that has a manualSend
impl whenand_run2
is being called inside multiple layers of.box()
ed futures AFAICT).