Open
Conversation
It allows for the challenge phase to accept closures that take some more context, e.g. moving non-Clone values in the challenge closure. This works in stable since Rust 1.35; cfr. rust-lang/rust#28796. This closes issue dalek-cryptography#244.
This adds a general lifetime for the second-phase constraints on RandomizeableConstraintSystem, which should cover the lifetime of each closure given to specify_randomized_constraints(). The latter can receive shorter lifetimes.
8728213 to
0247cb0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Continuation of a discussion at #276: the second phase challenges can only use
FnOnce + 'staticsince #276.This effectively breaks the API (and apparently, rightfully, annoys @oleganza)! We have to pass a generic lifetime to the
RandomizableConstraintSystemtrait in order to constrain the lifetime to the container inProverandVerifier. I don't think there's another way, except maybe with GATs (which would bring different API breaks anyhow).&mut selfmight get people into trouble with late-bound lifetimes. I've had that while experimenting on it, but haven't come to fix it yet. I think it should be possible to add it later though, without breaking API...Depends on #244/#276 (I'll rebase on develop when #276 is merged, too much conflicts to handle otherwise)