@@ -56,7 +56,7 @@ impl MemoryAddress {
56
56
}
57
57
58
58
/// 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 ) ]
60
60
pub enum HeapValueType {
61
61
// A single field element is enough to represent the value with a given bit size
62
62
Simple ( BitSize ) ,
@@ -81,7 +81,7 @@ impl HeapValueType {
81
81
}
82
82
83
83
/// 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 ) ]
85
85
pub struct HeapArray {
86
86
pub pointer : MemoryAddress ,
87
87
pub size : usize ,
@@ -94,13 +94,13 @@ impl Default for HeapArray {
94
94
}
95
95
96
96
/// 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 ) ]
98
98
pub struct HeapVector {
99
99
pub pointer : MemoryAddress ,
100
100
pub size : MemoryAddress ,
101
101
}
102
102
103
- #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Copy , PartialOrd , Ord ) ]
103
+ #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Copy , PartialOrd , Ord , Hash ) ]
104
104
pub enum IntegerBitSize {
105
105
U1 ,
106
106
U8 ,
@@ -152,7 +152,7 @@ impl std::fmt::Display for IntegerBitSize {
152
152
}
153
153
}
154
154
155
- #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Copy , PartialOrd , Ord ) ]
155
+ #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Copy , PartialOrd , Ord , Hash ) ]
156
156
pub enum BitSize {
157
157
Field ,
158
158
Integer ( IntegerBitSize ) ,
@@ -181,7 +181,7 @@ impl BitSize {
181
181
/// While we are usually agnostic to how memory is passed within Brillig,
182
182
/// this needs to be encoded somehow when dealing with an external system.
183
183
/// 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 ) ]
185
185
pub enum ValueOrArray {
186
186
/// A single value passed to or from an external call
187
187
/// It is an 'immediate' value - used without dereferencing.
@@ -198,7 +198,7 @@ pub enum ValueOrArray {
198
198
HeapVector ( HeapVector ) ,
199
199
}
200
200
201
- #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize ) ]
201
+ #[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize , Hash ) ]
202
202
pub enum BrilligOpcode < F > {
203
203
/// Takes the fields in addresses `lhs` and `rhs`
204
204
/// Performs the specified binary operation
@@ -314,7 +314,7 @@ pub enum BrilligOpcode<F> {
314
314
}
315
315
316
316
/// Binary fixed-length field expressions
317
- #[ derive( Debug , Clone , Copy , PartialEq , Eq , Serialize , Deserialize ) ]
317
+ #[ derive( Debug , Clone , Copy , PartialEq , Eq , Serialize , Deserialize , Hash ) ]
318
318
pub enum BinaryFieldOp {
319
319
Add ,
320
320
Sub ,
@@ -332,7 +332,7 @@ pub enum BinaryFieldOp {
332
332
}
333
333
334
334
/// Binary fixed-length integer expressions
335
- #[ derive( Debug , Clone , Copy , PartialEq , Eq , Serialize , Deserialize ) ]
335
+ #[ derive( Debug , Clone , Copy , PartialEq , Eq , Serialize , Deserialize , Hash ) ]
336
336
pub enum BinaryIntOp {
337
337
Add ,
338
338
Sub ,
0 commit comments