From e01596fab40a7cf73d5c0eca662ce6348b50e4dc Mon Sep 17 00:00:00 2001 From: "a.stevan" <antoine.stevan@isae-supaero.fr> Date: Thu, 30 May 2024 13:13:46 +0200 Subject: [PATCH 1/2] clone the RNG inside `measure_inbreeding` --- bins/inbreeding/src/main.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/bins/inbreeding/src/main.rs b/bins/inbreeding/src/main.rs index 47ace20f..e6d48d68 100644 --- a/bins/inbreeding/src/main.rs +++ b/bins/inbreeding/src/main.rs @@ -38,15 +38,20 @@ fn measure_inbreeding<F: PrimeField>( nb_measurements: usize, mp: &MultiProgress, sty: &ProgressStyle, - rng: &mut impl RngCore, + rng: &(impl RngCore + 'static), ) -> f64 { + let mut rng: StdRng = (rng as &dyn std::any::Any) + .downcast_ref::<StdRng>() + .unwrap() + .clone(); + let mut count = 0; let pb = mp.add(ProgressBar::new(nb_measurements as u64)); pb.set_style(sty.clone()); pb.set_message("measure"); for _ in 0..nb_measurements { - if fec::decode(draw_unique_elements(shards, k, rng)).is_ok() { + if fec::decode(draw_unique_elements(shards, k, &mut rng)).is_ok() { count += 1; } pb.inc(1); @@ -62,7 +67,7 @@ fn end_to_end<F, Fun>( max_t: usize, nb_measurements: usize, measurement_schedule: Fun, - rng: &mut impl RngCore, + rng: &mut (impl RngCore + 'static), ) -> Result<(), KomodoError> where F: PrimeField, @@ -109,7 +114,7 @@ fn recoding<F, Fun>( env: Environment, nb_measurements: usize, measurement_schedule: Fun, - rng: &mut impl RngCore, + rng: &mut (impl RngCore + 'static), ) -> Result<(), KomodoError> where F: PrimeField, -- GitLab From 73c1e5956f402d0f83a29f3b86b152daa2db2301 Mon Sep 17 00:00:00 2001 From: "a.stevan" <antoine.stevan@isae-supaero.fr> Date: Fri, 31 May 2024 09:19:31 +0200 Subject: [PATCH 2/2] add Clone to `rng` --- bins/inbreeding/src/main.rs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/bins/inbreeding/src/main.rs b/bins/inbreeding/src/main.rs index 7ffc4265..e9f02c32 100644 --- a/bins/inbreeding/src/main.rs +++ b/bins/inbreeding/src/main.rs @@ -38,12 +38,9 @@ fn measure_inbreeding<F: PrimeField>( nb_measurements: usize, mp: &MultiProgress, sty: &ProgressStyle, - rng: &(impl RngCore + 'static), + rng: &(impl RngCore + Clone), ) -> f64 { - let mut rng: StdRng = (rng as &dyn std::any::Any) - .downcast_ref::<StdRng>() - .unwrap() - .clone(); + let mut rng = rng.clone(); let mut count = 0; @@ -67,7 +64,7 @@ fn end_to_end<F, Fun>( max_t: usize, nb_measurements: usize, measurement_schedule: Fun, - rng: &mut (impl RngCore + 'static), + rng: &mut (impl RngCore + Clone), ) -> Result<(), KomodoError> where F: PrimeField, @@ -114,7 +111,7 @@ fn recoding<F, Fun>( env: Environment, nb_measurements: usize, measurement_schedule: Fun, - rng: &mut (impl RngCore + 'static), + rng: &mut (impl RngCore + Clone), ) -> Result<(), KomodoError> where F: PrimeField, -- GitLab