refactor PolicyExpr to use Visitor Pattern #458
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.
Resolves #457 .
This is also a portion of the proposed changes in #456 RFD8 .
Expr
variants to have their own proper structs so we can havevisit_X
patterns on themInto<Expr>
for each Expr sub-type to make it easier to turn a proper struct into itsExpr
variantExprVisitor
patternExprVisitor
to perform policy expr execution, replacedpub(crate) eval()
funcCurrently
ExprVisitor
is implemented onEnv<'_>
, but as is mentioned in the RFD, we might want other "visitors" on an Expr tree. In a subsequent PR as it becomes relevant, I recommend changing it soExecutor
implmentsExprVisitor
and theenv.rs
functions likebinary_primitive_op
are changed to take a&Executor
. This way, additional structs that take anEnv
can be created toimpl ExprVisitor
to do different behavior.