@@ -1500,13 +1500,13 @@ impl CairoRunner {
15001500 . clone ( ) ;
15011501
15021502 let relocatable_memory = self
1503- . vm
1504- . segments
1505- . memory
1506- . data
1507- . iter ( )
1508- . map ( |segment| segment. iter ( ) . map ( |cell| cell. get_value ( ) ) . collect ( ) )
1509- . collect ( ) ;
1503+ . vm
1504+ . segments
1505+ . memory
1506+ . data
1507+ . iter ( )
1508+ . map ( |segment| segment. iter ( ) . map ( |cell| cell. get_value ( ) ) . collect ( ) )
1509+ . collect ( ) ;
15101510
15111511 let public_memory_offsets = self
15121512 . vm
@@ -1567,13 +1567,18 @@ impl ProverInputInfo {
15671567 pub fn serialize_json ( & self ) -> Result < String , ProverInputInfoError > {
15681568 serde_json:: to_string_pretty ( & self ) . map_err ( ProverInputInfoError :: from)
15691569 }
1570+ pub fn serialize ( & self ) -> Result < Vec < u8 > , ProverInputInfoError > {
1571+ postcard:: to_allocvec ( & self ) . map_err ( ProverInputInfoError :: from)
1572+ }
15701573}
15711574
15721575// TODO(Stav): add TraceNotEnabled error.
15731576#[ derive( Debug , Error ) ]
15741577pub enum ProverInputInfoError {
1575- #[ error( "Failed to (de)serialize data" ) ]
1576- Serde ( #[ from] serde_json:: Error ) ,
1578+ #[ error( "Failed to (de)serialize data using postcard" ) ]
1579+ SerdePostcard ( #[ from] postcard:: Error ) ,
1580+ #[ error( "Failed to (de)serialize data using json" ) ]
1581+ SerdeJson ( #[ from] serde_json:: Error ) ,
15771582}
15781583
15791584#[ derive( Clone , Debug , Eq , PartialEq ) ]
@@ -5699,6 +5704,24 @@ mod tests {
56995704 fn serialize_and_deserialize_prover_input_info ( #[ case] program_content : & [ u8 ] ) {
57005705 use crate :: types:: layout_name:: LayoutName ;
57015706
5707+ fn compare_prover_input_info (
5708+ original : & ProverInputInfo ,
5709+ deserialized : & ProverInputInfo ,
5710+ ) {
5711+ assert_eq ! (
5712+ original. relocatable_memory, deserialized. relocatable_memory
5713+ ) ;
5714+ assert_eq ! (
5715+ original. relocatable_trace, deserialized. relocatable_trace
5716+ ) ;
5717+ assert_eq ! (
5718+ original. builtins_segments, deserialized. builtins_segments
5719+ ) ;
5720+ assert_eq ! (
5721+ original. public_memory_offsets, deserialized. public_memory_offsets
5722+ ) ;
5723+ }
5724+
57025725 let config = crate :: cairo_run:: CairoRunConfig {
57035726 proof_mode : false ,
57045727 relocate_mem : false ,
@@ -5708,25 +5731,23 @@ mod tests {
57085731 } ;
57095732 let runner = crate :: cairo_run:: cairo_run ( program_content, & config, & mut crate :: hint_processor:: builtin_hint_processor:: builtin_hint_processor_definition:: BuiltinHintProcessor :: new_empty ( ) ) . unwrap ( ) ;
57105733 let prover_input_info = runner. get_prover_input_info ( ) . unwrap ( ) ;
5711- let serialized_prover_input_info = prover_input_info. serialize_json ( ) . unwrap ( ) ;
5712- let deserialized_prover_input_info: ProverInputInfo =
5713- serde_json:: from_str ( & serialized_prover_input_info) . unwrap ( ) ;
5734+
5735+ // Using postcard.
5736+ let serialized_prover_input_info = prover_input_info. serialize ( ) . unwrap ( ) ;
5737+ let deserialized_prover_input_info : ProverInputInfo = postcard:: from_bytes ( & serialized_prover_input_info) . unwrap ( ) ;
5738+
57145739 // Check that the deserialized prover input info is equal to the original one.
5715- assert_eq ! (
5716- prover_input_info. relocatable_memory,
5717- deserialized_prover_input_info. relocatable_memory
5718- ) ;
5719- assert_eq ! (
5720- prover_input_info. relocatable_trace,
5721- deserialized_prover_input_info. relocatable_trace
5722- ) ;
5723- assert_eq ! (
5724- prover_input_info. builtins_segments,
5725- deserialized_prover_input_info. builtins_segments
5726- ) ;
5727- assert_eq ! (
5728- prover_input_info. public_memory_offsets,
5729- deserialized_prover_input_info. public_memory_offsets
5740+ compare_prover_input_info ( & prover_input_info, & deserialized_prover_input_info) ;
5741+
5742+ // Using json.
5743+ let serialized_prover_input_info_json = prover_input_info. serialize_json ( ) . unwrap ( ) ;
5744+ let deserialized_prover_input_info_json: ProverInputInfo =
5745+ serde_json:: from_str ( & serialized_prover_input_info_json) . unwrap ( ) ;
5746+
5747+ // Check that the deserialized prover input info is equal to the original one.
5748+ compare_prover_input_info (
5749+ & prover_input_info,
5750+ & deserialized_prover_input_info_json,
57305751 ) ;
57315752 }
57325753}
0 commit comments