diff --git a/src/feedbacks/mod.rs b/src/feedbacks/mod.rs index 8bbb8bfd44..f1a1dccf7e 100644 --- a/src/feedbacks/mod.rs +++ b/src/feedbacks/mod.rs @@ -1 +1,8 @@ -pub trait Feedback {} +use crate::corpus::Testcase; +use crate::executors::Executor; + +pub trait Feedback { + + fn is_interesting(&mut self, executor: &dyn Executor, entry: &dyn Testcase) -> f64; + +} diff --git a/src/observers/mod.rs b/src/observers/mod.rs index a411f550bf..b629bc94d3 100644 --- a/src/observers/mod.rs +++ b/src/observers/mod.rs @@ -1,4 +1,5 @@ use crate::AflError; +use std::cell::RefCell; pub trait Observer { fn flush(&mut self) -> Result<(), AflError> { @@ -11,3 +12,41 @@ pub trait Observer { Ok(()) } } + +pub trait MapObserver: Observer { + + // TODO: Rust + fn get_map(&self) -> &RefCell>; + //fn get_map_mut(&mut self) -> &mut Vec; + +} + +pub struct U8MapObserver { + + map: RefCell>, + +} + +impl Observer for U8MapObserver { + fn reset(&mut self) -> Result<(), AflError> { + + // TODO: Clear + Err(AflError::Unknown) + + } +} + +impl MapObserver for U8MapObserver { + + fn get_map(&self) -> &RefCell> { + // TODO: Rust this better + return &self.map; + } + +} + +impl U8MapObserver { + pub fn new(map: RefCell>) -> Self { + U8MapObserver{map: map} + } +} \ No newline at end of file