This repository has been archived by the owner on Apr 9, 2024. It is now read-only.
chore!: organise operator implementations for Expression
#190
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.
Related issue(s)
(If it does not already exist, first create a GitHub issue that describes the problem this Pull Request (PR) solves before creating the PR and link it here.)
Resolves (link to issue)
Description
Summary of changes
The disorganised approach we have to implementing various traits on
Expression
has been bugging me. We've got a jumble ofFrom
s, maths operators and sorting operators all in the same file. This means that we're missing a few operator definitions which we'd want but it's not obvious that they're missing because there's not a defined order for them.This PR takes
arithmetic.rs
and renames it toexpression.rs
, we then break this into three files:mod.rs
which contains the bulk of the definition ofExpression
along with the mainimpl
.operators.rs
which definesAdd, Mul, Neg, Sub
onExpression
against itself,Witness
andFieldElement
.ordering.rs
which contains the logic necessary to implementOrd/PartialOrd
I've also made the
Add, Mul, Sub
operators all commutative.One thing to note is that I've removed the from/operator implementations for
&FieldElement
and&Witness
in favour ofFieldElement
andWitness
. This is to match the fact that we only define arithmetic operators forFieldElements
and not&FieldElement
inacir_field
andWitness
is a glorifiedu32
so the benefits of passing by reference is going to be negligible or negative.Breaking change as we'll likely have to remove some
&
to account for this.Dependency additions / changes
(If applicable.)
Test additions / changes
(If applicable.)
Checklist
cargo fmt
with default settings.Additional context
(If applicable.)
BEGIN_COMMIT_OVERRIDE
chore!: organise operator implementations for Expression (#190)
END_COMMIT_OVERRIDE