fix(foundationdb): make the db_run non capturing #113
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.
Hello 👋
I would like to introduce a modification in the
Database::run
parameters signature.The function is great, but there is a little flaw with the
maybe_committed
closure parameter. As this one is a boolean which is "copiable".Therefore, if you want to use this parameter, you have to make the closure capturing.
But sometimes this behavior is not desired. For example, when, your closure uses an immutable reference of a variable in the outer environment.
With the error:
There are two ways to making it functional
By using an Arc
Which wraps the variable in an immutable state.
Or by forcing the move of the boolean instead of its copy. This is done by wrapping the boolean into a non-copy structure.
The boolean can be recovered through the
into()
callThis way the data keeps its type.
As I prefer the second solution, but because the boilerplate is a bit heavy. I would like to modify the boolean type of mayby_committed into a wrapped boolean implementing Into.
This way the API becomes:
Leaving the closure non-capturing.