From 889ee1e99ce9121d8b5c22eeb36b4f6897b8694b Mon Sep 17 00:00:00 2001 From: Andrea Fioraldi Date: Thu, 29 Oct 2020 17:49:10 +0100 Subject: [PATCH] solve reducer generic using phantom data --- src/feedbacks/mod.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/feedbacks/mod.rs b/src/feedbacks/mod.rs index 93b266f717..f6047643e9 100644 --- a/src/feedbacks/mod.rs +++ b/src/feedbacks/mod.rs @@ -5,6 +5,7 @@ use crate::executors::Executor; use crate::observers::MapObserver; use num::Integer; +use std::marker::PhantomData; pub trait Feedback { /// is_interesting should return the "Interestingness" from 0 to 255 (percent times 2.55) @@ -27,12 +28,13 @@ pub trait MinReducer { } } -pub struct MapFeedback { +pub struct MapFeedback> { virgin_map: Vec, + _phantom: PhantomData, } -impl<'a, MapT: Integer + Copy + 'static, ReducerT: Reducer> Feedback for MapFeedback { - fn is_interesting(&mut self, executor: &dyn Executor, entry: &dyn Testcase) -> u8 { +impl<'a, MapT: Integer + Copy + 'static, ReducerT: Reducer> Feedback for MapFeedback { + fn is_interesting(&mut self, executor: &dyn Executor, _entry: &dyn Testcase) -> u8 { let mut interesting = 0; for observer in executor.get_observers() { if let Some(o) = observer.as_any().downcast_ref::>() { @@ -53,11 +55,12 @@ impl<'a, MapT: Integer + Copy + 'static, ReducerT: Reducer> Feedback for M } } -impl<'a, MapT: Integer + Copy + 'static> MapFeedback { +impl<'a, MapT: Integer + Copy + 'static, ReducerT: Reducer> MapFeedback { /// Create new MapFeedback using a static map observer pub fn new(map_size: usize) -> Self { MapFeedback { virgin_map: vec![MapT::zero(); map_size], + _phantom: PhantomData, } } }