@aztec/protocol-contracts 4.0.0-nightly.20260210 → 4.0.0-nightly.20260211

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -351,7 +351,7 @@
351
351
  }
352
352
  },
353
353
  "bytecode": "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",
354
- "debug_symbols": "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"
354
+ "debug_symbols": "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"
355
355
  },
356
356
  {
357
357
  "name": "set_authorized",
@@ -2327,7 +2327,7 @@
2327
2327
  }
2328
2328
  },
2329
2329
  "bytecode": "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",
2330
- "debug_symbols": "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"
2330
+ "debug_symbols": "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"
2331
2331
  }
2332
2332
  ],
2333
2333
  "outputs": {
@@ -2686,7 +2686,7 @@
2686
2686
  },
2687
2687
  "449": {
2688
2688
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/serde/src/type_impls.nr",
2689
- "source": "use crate::{reader::Reader, serialization::{Deserialize, Serialize}, writer::Writer};\nuse ::std::embedded_curve_ops::EmbeddedCurvePoint;\nuse ::std::embedded_curve_ops::EmbeddedCurveScalar;\n\nglobal U1_SERIALIZED_LEN: u32 = 1;\nglobal BOOL_SERIALIZED_LEN: u32 = 1;\nglobal U8_SERIALIZED_LEN: u32 = 1;\nglobal U16_SERIALIZED_LEN: u32 = 1;\nglobal U32_SERIALIZED_LEN: u32 = 1;\nglobal U64_SERIALIZED_LEN: u32 = 1;\nglobal U128_SERIALIZED_LEN: u32 = 1;\nglobal FIELD_SERIALIZED_LEN: u32 = 1;\nglobal I8_SERIALIZED_LEN: u32 = 1;\nglobal I16_SERIALIZED_LEN: u32 = 1;\nglobal I32_SERIALIZED_LEN: u32 = 1;\nglobal I64_SERIALIZED_LEN: u32 = 1;\n\nimpl Serialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> bool {\n reader.read() != 0\n }\n}\n\nimpl Serialize for u1 {\n let N: u32 = U1_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u1 {\n let N: u32 = U1_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u1\n }\n}\n\nimpl Serialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u8\n }\n}\n\nimpl Serialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u16\n }\n}\n\nimpl Serialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u32\n }\n}\n\nimpl Serialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u64\n }\n}\n\nimpl Serialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u128\n }\n}\n\nimpl Serialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self);\n }\n}\n\nimpl Deserialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read()\n }\n}\n\nimpl Serialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u8 as Field);\n }\n}\n\nimpl Deserialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u8 as i8\n }\n}\n\nimpl Serialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u16 as Field);\n }\n}\n\nimpl Deserialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u16 as i16\n }\n}\n\nimpl Serialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u32 as Field);\n }\n}\n\nimpl Deserialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u32 as i32\n }\n}\n\nimpl Serialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u64 as Field);\n }\n}\n\nimpl Deserialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u64 as i64\n }\n}\n\nimpl<T, let M: u32> Serialize for [T; M]\nwhere\n T: Serialize,\n{\n let N: u32 = <T as Serialize>::N * M;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n for i in 0..M {\n self[i].stream_serialize(writer);\n }\n }\n}\n\nimpl<T, let M: u32> Deserialize for [T; M]\nwhere\n T: Deserialize,\n{\n let N: u32 = <T as Deserialize>::N * M;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n let mut result: [T; M] = std::mem::zeroed();\n for i in 0..M {\n result[i] = T::stream_deserialize(reader);\n }\n result\n }\n}\n\nimpl<T> Serialize for Option<T>\nwhere\n T: Serialize,\n{\n let N: u32 = <T as Serialize>::N + 1;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write_bool(self.is_some());\n if self.is_some() {\n self.unwrap_unchecked().stream_serialize(writer);\n } else {\n writer.advance_offset(<T as Serialize>::N);\n }\n }\n}\n\nimpl<T> Deserialize for Option<T>\nwhere\n T: Deserialize,\n{\n let N: u32 = <T as Deserialize>::N + 1;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n if reader.read_bool() {\n Option::some(<T as Deserialize>::stream_deserialize(reader))\n } else {\n reader.advance_offset(<T as Deserialize>::N);\n Option::none()\n }\n }\n}\n\nglobal SCALAR_SIZE: u32 = 2;\n\nimpl Serialize for EmbeddedCurveScalar {\n\n let N: u32 = SCALAR_SIZE;\n\n fn serialize(self) -> [Field; SCALAR_SIZE] {\n [self.lo, self.hi]\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self.lo);\n writer.write(self.hi);\n }\n}\n\nimpl Deserialize for EmbeddedCurveScalar {\n let N: u32 = SCALAR_SIZE;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n Self { lo: fields[0], hi: fields[1] }\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n Self { lo: reader.read(), hi: reader.read() }\n }\n}\n\nglobal POINT_SIZE: u32 = 3;\n\nimpl Serialize for EmbeddedCurvePoint {\n let N: u32 = POINT_SIZE;\n\n fn serialize(self) -> [Field; Self::N] {\n [self.x, self.y, self.is_infinite as Field]\n }\n\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self.x);\n writer.write(self.y);\n writer.write(self.is_infinite as Field);\n }\n}\n\nimpl Deserialize for EmbeddedCurvePoint {\n let N: u32 = POINT_SIZE;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n Self { x: fields[0], y: fields[1], is_infinite: fields[2] != 0 }\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n Self { x: reader.read(), y: reader.read(), is_infinite: reader.read_bool() }\n }\n}\n\nimpl<let M: u32> Deserialize for str<M> {\n let N: u32 = M;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n let u8_arr = <[u8; Self::N] as Deserialize>::stream_deserialize(reader);\n str::<Self::N>::from(u8_arr)\n }\n}\n\nimpl<let M: u32> Serialize for str<M> {\n let N: u32 = M;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n self.as_bytes().stream_serialize(writer);\n }\n}\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl<T, let M: u32> Deserialize for BoundedVec<T, M>\nwhere\n T: Deserialize,\n{\n let N: u32 = <T as Deserialize>::N * M + 1;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n let mut new_bounded_vec: BoundedVec<T, M> = BoundedVec::new();\n let payload_len = Self::N - 1;\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n let len = reader.peek_offset(payload_len) as u32;\n\n for i in 0..M {\n if i < len {\n new_bounded_vec.push(<T as Deserialize>::stream_deserialize(reader));\n }\n }\n\n // +1 for the length of the BoundedVec\n reader.advance_offset((M - len) * <T as Deserialize>::N + 1);\n\n new_bounded_vec\n }\n}\n\n// This may cause issues if used as program input, because noir disallows empty arrays for program input.\n// I think this is okay because I don't foresee a unit type being used as input. But leaving this comment as a hint\n// if someone does run into this in the future.\nimpl Deserialize for () {\n let N: u32 = 0;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(_reader: &mut Reader<K>) -> Self {\n ()\n }\n}\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl<T, let M: u32> Serialize for BoundedVec<T, M>\nwhere\n T: Serialize,\n{\n let N: u32 = <T as Serialize>::N * M + 1; // +1 for the length of the BoundedVec\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n self.storage().stream_serialize(writer);\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n writer.write_u32(self.len() as u32);\n }\n}\n\n// Create a slice of the given length with each element made from `f(i)` where `i` is the current index\ncomptime fn make_slice<Env, T>(length: u32, f: fn[Env](u32) -> T) -> [T] {\n let mut slice = @[];\n for i in 0..length {\n slice = slice.push_back(f(i));\n }\n slice\n}\n\n// Implements Serialize and Deserialize for an arbitrary tuple type\ncomptime fn impl_serialize_for_tuple(_m: Module, length: u32) -> Quoted {\n // `T0`, `T1`, `T2`\n let type_names = make_slice(length, |i| f\"T{i}\".quoted_contents());\n\n // `result0`, `result1`, `result2`\n let result_names = make_slice(length, |i| f\"result{i}\".quoted_contents());\n\n // `T0, T1, T2`\n let field_generics = type_names.join(quote [,]);\n\n // `<T0 as Serialize>::N + <T1 as Serialize>::N + <T2 as Serialize>::N`\n let full_size_serialize = type_names\n .map(|type_name| quote {\n <$type_name as Serialize>::N\n })\n .join(quote [+]);\n\n // `<T0 as Deserialize>::N + <T1 as Deserialize>::N + <T2 as Deserialize>::N`\n let full_size_deserialize = type_names\n .map(|type_name| quote {\n <$type_name as Deserialize>::N\n })\n .join(quote [+]);\n\n // `T0: Serialize, T1: Serialize, T2: Serialize,`\n let serialize_constraints = type_names\n .map(|field_name| quote {\n $field_name: Serialize,\n })\n .join(quote []);\n\n // `T0: Deserialize, T1: Deserialize, T2: Deserialize,`\n let deserialize_constraints = type_names\n .map(|field_name| quote {\n $field_name: Deserialize,\n })\n .join(quote []);\n\n // Statements to serialize each field\n let serialized_fields = type_names\n .mapi(|i, _type_name| quote {\n $crate::serialization::Serialize::stream_serialize(self.$i, writer);\n })\n .join(quote []);\n\n // Statements to deserialize each field\n let deserialized_fields = type_names\n .mapi(|i, type_name| {\n let result_name = result_names[i];\n quote {\n let $result_name = <$type_name as $crate::serialization::Deserialize>::stream_deserialize(reader);\n }\n })\n .join(quote []);\n let deserialize_results = result_names.join(quote [,]);\n\n quote {\n impl<$field_generics> Serialize for ($field_generics) where $serialize_constraints {\n let N: u32 = $full_size_serialize;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: $crate::writer::Writer<Self::N> = $crate::writer::Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut $crate::writer::Writer<K>) {\n\n $serialized_fields\n }\n }\n\n impl<$field_generics> Deserialize for ($field_generics) where $deserialize_constraints {\n let N: u32 = $full_size_deserialize;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = $crate::reader::Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n \n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut $crate::reader::Reader<K>) -> Self {\n $deserialized_fields\n ($deserialize_results)\n }\n }\n }\n}\n\n// Keeping these manual impls. They are more efficient since they do not\n// require copying sub-arrays from any serialized arrays.\nimpl<T1> Serialize for (T1,)\nwhere\n T1: Serialize,\n{\n let N: u32 = <T1 as Serialize>::N;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: crate::writer::Writer<Self::N> = crate::writer::Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n self.0.stream_serialize(writer);\n }\n}\n\nimpl<T1> Deserialize for (T1,)\nwhere\n T1: Deserialize,\n{\n let N: u32 = <T1 as Deserialize>::N;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = crate::reader::Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n (<T1 as Deserialize>::stream_deserialize(reader),)\n }\n}\n\n#[impl_serialize_for_tuple(2)]\n#[impl_serialize_for_tuple(3)]\n#[impl_serialize_for_tuple(4)]\n#[impl_serialize_for_tuple(5)]\n#[impl_serialize_for_tuple(6)]\nmod impls {\n use crate::serialization::{Deserialize, Serialize};\n}\n"
2689
+ "source": "use crate::{reader::Reader, serialization::{Deserialize, Serialize}, writer::Writer};\nuse std::embedded_curve_ops::EmbeddedCurvePoint;\nuse std::embedded_curve_ops::EmbeddedCurveScalar;\n\nglobal U1_SERIALIZED_LEN: u32 = 1;\nglobal BOOL_SERIALIZED_LEN: u32 = 1;\nglobal U8_SERIALIZED_LEN: u32 = 1;\nglobal U16_SERIALIZED_LEN: u32 = 1;\nglobal U32_SERIALIZED_LEN: u32 = 1;\nglobal U64_SERIALIZED_LEN: u32 = 1;\nglobal U128_SERIALIZED_LEN: u32 = 1;\nglobal FIELD_SERIALIZED_LEN: u32 = 1;\nglobal I8_SERIALIZED_LEN: u32 = 1;\nglobal I16_SERIALIZED_LEN: u32 = 1;\nglobal I32_SERIALIZED_LEN: u32 = 1;\nglobal I64_SERIALIZED_LEN: u32 = 1;\n\nimpl Serialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for bool {\n let N: u32 = BOOL_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> bool {\n reader.read() != 0\n }\n}\n\nimpl Serialize for u1 {\n let N: u32 = U1_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u1 {\n let N: u32 = U1_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u1\n }\n}\n\nimpl Serialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u8 {\n let N: u32 = U8_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u8\n }\n}\n\nimpl Serialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u16 {\n let N: u32 = U16_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u16\n }\n}\n\nimpl Serialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u32 {\n let N: u32 = U32_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u32\n }\n}\n\nimpl Serialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u64 {\n let N: u32 = U64_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u64\n }\n}\n\nimpl Serialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as Field);\n }\n}\n\nimpl Deserialize for u128 {\n let N: u32 = U128_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u128\n }\n}\n\nimpl Serialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self);\n }\n}\n\nimpl Deserialize for Field {\n let N: u32 = FIELD_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read()\n }\n}\n\nimpl Serialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u8 as Field);\n }\n}\n\nimpl Deserialize for i8 {\n let N: u32 = I8_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u8 as i8\n }\n}\n\nimpl Serialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u16 as Field);\n }\n}\n\nimpl Deserialize for i16 {\n let N: u32 = I16_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u16 as i16\n }\n}\n\nimpl Serialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u32 as Field);\n }\n}\n\nimpl Deserialize for i32 {\n let N: u32 = I32_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u32 as i32\n }\n}\n\nimpl Serialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self as u64 as Field);\n }\n}\n\nimpl Deserialize for i64 {\n let N: u32 = I64_SERIALIZED_LEN;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n reader.read() as u64 as i64\n }\n}\n\nimpl<T, let M: u32> Serialize for [T; M]\nwhere\n T: Serialize,\n{\n let N: u32 = <T as Serialize>::N * M;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n for i in 0..M {\n self[i].stream_serialize(writer);\n }\n }\n}\n\nimpl<T, let M: u32> Deserialize for [T; M]\nwhere\n T: Deserialize,\n{\n let N: u32 = <T as Deserialize>::N * M;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n let mut result: [T; M] = std::mem::zeroed();\n for i in 0..M {\n result[i] = T::stream_deserialize(reader);\n }\n result\n }\n}\n\nimpl<T> Serialize for Option<T>\nwhere\n T: Serialize,\n{\n let N: u32 = <T as Serialize>::N + 1;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write_bool(self.is_some());\n if self.is_some() {\n self.unwrap_unchecked().stream_serialize(writer);\n } else {\n writer.advance_offset(<T as Serialize>::N);\n }\n }\n}\n\nimpl<T> Deserialize for Option<T>\nwhere\n T: Deserialize,\n{\n let N: u32 = <T as Deserialize>::N + 1;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n if reader.read_bool() {\n Option::some(<T as Deserialize>::stream_deserialize(reader))\n } else {\n reader.advance_offset(<T as Deserialize>::N);\n Option::none()\n }\n }\n}\n\nglobal SCALAR_SIZE: u32 = 2;\n\nimpl Serialize for EmbeddedCurveScalar {\n\n let N: u32 = SCALAR_SIZE;\n\n fn serialize(self) -> [Field; SCALAR_SIZE] {\n [self.lo, self.hi]\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self.lo);\n writer.write(self.hi);\n }\n}\n\nimpl Deserialize for EmbeddedCurveScalar {\n let N: u32 = SCALAR_SIZE;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n Self { lo: fields[0], hi: fields[1] }\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n Self { lo: reader.read(), hi: reader.read() }\n }\n}\n\nglobal POINT_SIZE: u32 = 3;\n\nimpl Serialize for EmbeddedCurvePoint {\n let N: u32 = POINT_SIZE;\n\n fn serialize(self) -> [Field; Self::N] {\n [self.x, self.y, self.is_infinite as Field]\n }\n\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n writer.write(self.x);\n writer.write(self.y);\n writer.write(self.is_infinite as Field);\n }\n}\n\nimpl Deserialize for EmbeddedCurvePoint {\n let N: u32 = POINT_SIZE;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n Self { x: fields[0], y: fields[1], is_infinite: fields[2] != 0 }\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n Self { x: reader.read(), y: reader.read(), is_infinite: reader.read_bool() }\n }\n}\n\nimpl<let M: u32> Deserialize for str<M> {\n let N: u32 = M;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n let u8_arr = <[u8; Self::N] as Deserialize>::stream_deserialize(reader);\n str::<Self::N>::from(u8_arr)\n }\n}\n\nimpl<let M: u32> Serialize for str<M> {\n let N: u32 = M;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n self.as_bytes().stream_serialize(writer);\n }\n}\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl<T, let M: u32> Deserialize for BoundedVec<T, M>\nwhere\n T: Deserialize,\n{\n let N: u32 = <T as Deserialize>::N * M + 1;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n let mut new_bounded_vec: BoundedVec<T, M> = BoundedVec::new();\n let payload_len = Self::N - 1;\n\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n let len = reader.peek_offset(payload_len) as u32;\n\n for i in 0..M {\n if i < len {\n new_bounded_vec.push(<T as Deserialize>::stream_deserialize(reader));\n }\n }\n\n // +1 for the length of the BoundedVec\n reader.advance_offset((M - len) * <T as Deserialize>::N + 1);\n\n new_bounded_vec\n }\n}\n\n// This may cause issues if used as program input, because noir disallows empty arrays for program input.\n// I think this is okay because I don't foresee a unit type being used as input. But leaving this comment as a hint\n// if someone does run into this in the future.\nimpl Deserialize for () {\n let N: u32 = 0;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(_reader: &mut Reader<K>) -> Self {\n ()\n }\n}\n\n// Note: Not deriving this because it's not supported to call derive_serialize on a \"remote\" struct (and it will never\n// be supported).\nimpl<T, let M: u32> Serialize for BoundedVec<T, M>\nwhere\n T: Serialize,\n{\n let N: u32 = <T as Serialize>::N * M + 1; // +1 for the length of the BoundedVec\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: Writer<Self::N> = Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n self.storage().stream_serialize(writer);\n // Length is stored in the last field as we need to match intrinsic Noir serialization and the `len` struct\n // field is after `storage` struct field (see `bounded_vec.nr` in noir-stdlib)\n writer.write_u32(self.len() as u32);\n }\n}\n\n// Create a slice of the given length with each element made from `f(i)` where `i` is the current index\ncomptime fn make_slice<Env, T>(length: u32, f: fn[Env](u32) -> T) -> [T] {\n let mut slice = @[];\n for i in 0..length {\n slice = slice.push_back(f(i));\n }\n slice\n}\n\n// Implements Serialize and Deserialize for an arbitrary tuple type\ncomptime fn impl_serialize_for_tuple(_m: Module, length: u32) -> Quoted {\n // `T0`, `T1`, `T2`\n let type_names = make_slice(length, |i| f\"T{i}\".quoted_contents());\n\n // `result0`, `result1`, `result2`\n let result_names = make_slice(length, |i| f\"result{i}\".quoted_contents());\n\n // `T0, T1, T2`\n let field_generics = type_names.join(quote [,]);\n\n // `<T0 as Serialize>::N + <T1 as Serialize>::N + <T2 as Serialize>::N`\n let full_size_serialize = type_names\n .map(|type_name| quote {\n <$type_name as Serialize>::N\n })\n .join(quote [+]);\n\n // `<T0 as Deserialize>::N + <T1 as Deserialize>::N + <T2 as Deserialize>::N`\n let full_size_deserialize = type_names\n .map(|type_name| quote {\n <$type_name as Deserialize>::N\n })\n .join(quote [+]);\n\n // `T0: Serialize, T1: Serialize, T2: Serialize,`\n let serialize_constraints = type_names\n .map(|field_name| quote {\n $field_name: Serialize,\n })\n .join(quote []);\n\n // `T0: Deserialize, T1: Deserialize, T2: Deserialize,`\n let deserialize_constraints = type_names\n .map(|field_name| quote {\n $field_name: Deserialize,\n })\n .join(quote []);\n\n // Statements to serialize each field\n let serialized_fields = type_names\n .mapi(|i, _type_name| quote {\n $crate::serialization::Serialize::stream_serialize(self.$i, writer);\n })\n .join(quote []);\n\n // Statements to deserialize each field\n let deserialized_fields = type_names\n .mapi(|i, type_name| {\n let result_name = result_names[i];\n quote {\n let $result_name = <$type_name as $crate::serialization::Deserialize>::stream_deserialize(reader);\n }\n })\n .join(quote []);\n let deserialize_results = result_names.join(quote [,]);\n\n quote {\n impl<$field_generics> Serialize for ($field_generics) where $serialize_constraints {\n let N: u32 = $full_size_serialize;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: $crate::writer::Writer<Self::N> = $crate::writer::Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut $crate::writer::Writer<K>) {\n\n $serialized_fields\n }\n }\n\n impl<$field_generics> Deserialize for ($field_generics) where $deserialize_constraints {\n let N: u32 = $full_size_deserialize;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = $crate::reader::Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n \n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut $crate::reader::Reader<K>) -> Self {\n $deserialized_fields\n ($deserialize_results)\n }\n }\n }\n}\n\n// Keeping these manual impls. They are more efficient since they do not\n// require copying sub-arrays from any serialized arrays.\nimpl<T1> Serialize for (T1,)\nwhere\n T1: Serialize,\n{\n let N: u32 = <T1 as Serialize>::N;\n\n fn serialize(self) -> [Field; Self::N] {\n let mut writer: crate::writer::Writer<Self::N> = crate::writer::Writer::new();\n self.stream_serialize(&mut writer);\n writer.finish()\n }\n\n #[inline_always]\n fn stream_serialize<let K: u32>(self, writer: &mut Writer<K>) {\n self.0.stream_serialize(writer);\n }\n}\n\nimpl<T1> Deserialize for (T1,)\nwhere\n T1: Deserialize,\n{\n let N: u32 = <T1 as Deserialize>::N;\n\n fn deserialize(fields: [Field; Self::N]) -> Self {\n let mut reader = crate::reader::Reader::new(fields);\n let result = Self::stream_deserialize(&mut reader);\n reader.finish();\n result\n }\n\n #[inline_always]\n fn stream_deserialize<let K: u32>(reader: &mut Reader<K>) -> Self {\n (<T1 as Deserialize>::stream_deserialize(reader),)\n }\n}\n\n#[impl_serialize_for_tuple(2)]\n#[impl_serialize_for_tuple(3)]\n#[impl_serialize_for_tuple(4)]\n#[impl_serialize_for_tuple(5)]\n#[impl_serialize_for_tuple(6)]\nmod impls {\n use crate::serialization::{Deserialize, Serialize};\n}\n"
2690
2690
  },
2691
2691
  "450": {
2692
2692
  "path": "/home/aztec-dev/aztec-packages/noir-projects/noir-protocol-circuits/crates/serde/src/writer.nr",