@@ -56,7 +56,7 @@ impl MemoryAddress {
5656}
5757
5858/// Describes the memory layout for an array/vector element
59- #[ derive( Debug , Clone , Eq , PartialEq , Serialize , Deserialize ) ]
59+ #[ derive( Debug , Clone , Eq , PartialEq , Serialize , Deserialize , Hash ) ]
6060pub enum HeapValueType {
6161 // A single field element is enough to represent the value with a given bit size
6262 Simple ( BitSize ) ,
@@ -81,7 +81,7 @@ impl HeapValueType {
8181}
8282
8383/// A fixed-sized array starting from a Brillig memory location.
84- #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Copy ) ]
84+ #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Copy , Hash ) ]
8585pub struct HeapArray {
8686 pub pointer : MemoryAddress ,
8787 pub size : usize ,
@@ -94,13 +94,13 @@ impl Default for HeapArray {
9494}
9595
9696/// A memory-sized vector passed starting from a Brillig memory location and with a memory-held size
97- #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Copy ) ]
97+ #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Copy , Hash ) ]
9898pub struct HeapVector {
9999 pub pointer : MemoryAddress ,
100100 pub size : MemoryAddress ,
101101}
102102
103- #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Copy , PartialOrd , Ord ) ]
103+ #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Copy , PartialOrd , Ord , Hash ) ]
104104pub enum IntegerBitSize {
105105 U1 ,
106106 U8 ,
@@ -152,7 +152,7 @@ impl std::fmt::Display for IntegerBitSize {
152152 }
153153}
154154
155- #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Copy , PartialOrd , Ord ) ]
155+ #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Copy , PartialOrd , Ord , Hash ) ]
156156pub enum BitSize {
157157 Field ,
158158 Integer ( IntegerBitSize ) ,
@@ -181,7 +181,7 @@ impl BitSize {
181181/// While we are usually agnostic to how memory is passed within Brillig,
182182/// this needs to be encoded somehow when dealing with an external system.
183183/// For simplicity, the extra type information is given right in the ForeignCall instructions.
184- #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Copy ) ]
184+ #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Copy , Hash ) ]
185185pub enum ValueOrArray {
186186 /// A single value passed to or from an external call
187187 /// It is an 'immediate' value - used without dereferencing.
@@ -198,7 +198,7 @@ pub enum ValueOrArray {
198198 HeapVector ( HeapVector ) ,
199199}
200200
201- #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize ) ]
201+ #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Hash ) ]
202202pub enum BrilligOpcode < F > {
203203 /// Takes the fields in addresses `lhs` and `rhs`
204204 /// Performs the specified binary operation
@@ -314,7 +314,7 @@ pub enum BrilligOpcode<F> {
314314}
315315
316316/// Binary fixed-length field expressions
317- #[ derive( Debug , Clone , Copy , PartialEq , Eq , Serialize , Deserialize ) ]
317+ #[ derive( Debug , Clone , Copy , PartialEq , Eq , Serialize , Deserialize , Hash ) ]
318318pub enum BinaryFieldOp {
319319 Add ,
320320 Sub ,
@@ -332,7 +332,7 @@ pub enum BinaryFieldOp {
332332}
333333
334334/// Binary fixed-length integer expressions
335- #[ derive( Debug , Clone , Copy , PartialEq , Eq , Serialize , Deserialize ) ]
335+ #[ derive( Debug , Clone , Copy , PartialEq , Eq , Serialize , Deserialize , Hash ) ]
336336pub enum BinaryIntOp {
337337 Add ,
338338 Sub ,
0 commit comments