diff --git a/src/observers/mod.rs b/src/observers/mod.rs index b629bc94d3..119963a15a 100644 --- a/src/observers/mod.rs +++ b/src/observers/mod.rs @@ -1,5 +1,5 @@ use crate::AflError; -use std::cell::RefCell; +use std::slice::from_raw_parts; pub trait Observer { fn flush(&mut self) -> Result<(), AflError> { @@ -16,14 +16,14 @@ pub trait Observer { pub trait MapObserver: Observer { // TODO: Rust - fn get_map(&self) -> &RefCell>; + fn get_map(&self) -> &[MapT]; //fn get_map_mut(&mut self) -> &mut Vec; } pub struct U8MapObserver { - map: RefCell>, + map: &'static [u8], } @@ -38,15 +38,18 @@ impl Observer for U8MapObserver { impl MapObserver for U8MapObserver { - fn get_map(&self) -> &RefCell> { - // TODO: Rust this better - return &self.map; + // TODO: Rust + fn get_map(&self) -> &[u8] { + return self.map; } + //fn get_map_mut(&mut self) -> &mut Vec; } impl U8MapObserver { - pub fn new(map: RefCell>) -> Self { - U8MapObserver{map: map} + pub fn new(map_ptr: *const u8, len: usize) -> Self { + unsafe { + U8MapObserver{map: from_raw_parts(map_ptr, len)} + } } } \ No newline at end of file