pub enum CircuitExpression<T: Clone + Debug + Add<Output = T> + Mul<Output = T> + Sub<Output = T> + Zero + One + Hash + Eq> {
Constant(T),
Input(usize),
BinaryOperation(BinOp, Rc<RefCell<Circuit<T>>>, Rc<RefCell<Circuit<T>>>),
}
Expand description
A circuit expression is a recursive data structure. It is a directed, acyclic graph of binary operations on the input variables. It has multiple roots, making it a “multitree.”
The leafs of the tree are
- constants (T)
- input variables
An inner node, representing some binary operation, is either addition, multiplication, or
subtraction. The left and right children of the node are the operands of the binary operation.
The left and right children are not themselves CircuitExpression
s, but rather
Circuit
s, which is a wrapper around CircuitExpression
that manages additional
bookkeeping information.
Variants§
Trait Implementations§
source§impl<T: Clone + Clone + Debug + Add<Output = T> + Mul<Output = T> + Sub<Output = T> + Zero + One + Hash + Eq> Clone for CircuitExpression<T>
impl<T: Clone + Clone + Debug + Add<Output = T> + Mul<Output = T> + Sub<Output = T> + Zero + One + Hash + Eq> Clone for CircuitExpression<T>
source§fn clone(&self) -> CircuitExpression<T>
fn clone(&self) -> CircuitExpression<T>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<T: Debug + Clone + Debug + Add<Output = T> + Mul<Output = T> + Sub<Output = T> + Zero + One + Hash + Eq> Debug for CircuitExpression<T>
impl<T: Debug + Clone + Debug + Add<Output = T> + Mul<Output = T> + Sub<Output = T> + Zero + One + Hash + Eq> Debug for CircuitExpression<T>
source§impl<T: Clone + Debug + Add<Output = T> + Mul<Output = T> + Sub<Output = T> + Zero + One + Hash + Eq> Hash for CircuitExpression<T>
impl<T: Clone + Debug + Add<Output = T> + Mul<Output = T> + Sub<Output = T> + Zero + One + Hash + Eq> Hash for CircuitExpression<T>
Auto Trait Implementations§
impl<T> !RefUnwindSafe for CircuitExpression<T>
impl<T> !Send for CircuitExpression<T>
impl<T> !Sync for CircuitExpression<T>
impl<T> Unpin for CircuitExpression<T>where T: Unpin,
impl<T> !UnwindSafe for CircuitExpression<T>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more