macro_rules! operation {
($vis:vis struct $name:ident<$operator:path, $circuit_operator:path, $operate:ident, $opcode:tt> { $( $input:ident => $output:ident $( ($($condition:tt),+) )?, )+ }) => { ... };
($vis:vis struct $name:ident<$operator:path, $circuit_operator:path, $operate:ident?, $opcode:tt> { $( $input:ident => $output:ident $( ($($condition:tt),+) )?, )+ }) => { ... };
($vis:vis struct $name:ident<$operator:path, $circuit_operator:path, $operate:ident, $opcode:tt> { $( ($input_a:ident, $input_b:ident) => $output:ident $( ($($condition:tt),+) )?, )+ }) => { ... };
($vis:vis struct $name:ident<$operator:path, $circuit_operator:path, $operate:ident, $opcode:tt> { $( ($input_a:ident, $input_b:ident, $input_c:ident) => $output:ident $( ($($condition:tt),+) )?, )+ }) => { ... };
($vis:vis struct $name:ident<$operator:path, $circuit_operator:path, $operate:ident, $opcode:tt, $num_inputs:tt> { $( ( $($input:ident),+ ) => $output:ident $( ($($condition:tt),+) )?, )+ }) => { ... };
($vis:vis struct $name:ident<$operator:path, $circuit_operator:path, $operate:ident?, $opcode:tt, $num_inputs:tt> { $( ( $($input:ident),+ ) => $output:ident $( ($($condition:tt),+) )?, )+ }) => { ... };
}
Expand description
Creates a new struct
that implements the Operation
trait.
§Examples
ⓘ
operation!(
pub struct AddOperation<AddOperator, "add"> {
(Field, Field) => Field,
(Group, Group) => Group,
(I8, I8) => I8,
(I16, I16) => I16,
(I32, I32) => I32,
(I64, I64) => I64,
(I128, I128) => I128,
(U8, U8) => U8,
(U16, U16) => U16,
(U32, U32) => U32,
(U64, U64) => U64,
(U128, U128) => U128,
(Scalar, Scalar) => Scalar,
}
);