Expand description
A ShadowExecutor
wraps an executor and a set of shadow observers
Implementations
sourceimpl<E: Debug, I: Debug, S, SOT: Debug> ShadowExecutor<E, I, S, SOT>where
SOT: ObserversTuple<I, S>,
impl<E: Debug, I: Debug, S, SOT: Debug> ShadowExecutor<E, I, S, SOT>where
SOT: ObserversTuple<I, S>,
sourcepub fn new(executor: E, shadow_observers: SOT) -> Self
pub fn new(executor: E, shadow_observers: SOT) -> Self
Create a new ShadowExecutor
, wrapping the given executor
.
sourcepub fn shadow_observers(&self) -> &SOT
pub fn shadow_observers(&self) -> &SOT
The shadow observers are not considered by the feedbacks and the manager, mutable
sourcepub fn shadow_observers_mut(&mut self) -> &mut SOT
pub fn shadow_observers_mut(&mut self) -> &mut SOT
The shadow observers are not considered by the feedbacks and the manager, mutable
Trait Implementations
sourceimpl<E, EM, I, S, SOT, Z> Executor<EM, I, S, Z> for ShadowExecutor<E, I, S, SOT>where
E: Executor<EM, I, S, Z>,
I: Input,
SOT: ObserversTuple<I, S>,
impl<E, EM, I, S, SOT, Z> Executor<EM, I, S, Z> for ShadowExecutor<E, I, S, SOT>where
E: Executor<EM, I, S, Z>,
I: Input,
SOT: ObserversTuple<I, S>,
sourcefn run_target(
&mut self,
fuzzer: &mut Z,
state: &mut S,
mgr: &mut EM,
input: &I
) -> Result<ExitKind, Error>
fn run_target(
&mut self,
fuzzer: &mut Z,
state: &mut S,
mgr: &mut EM,
input: &I
) -> Result<ExitKind, Error>
Instruct the target about the input and run
sourcefn with_observers<OT>(self, observers: OT) -> WithObservers<Self, OT>where
Self: Sized,
OT: ObserversTuple<I, S>,
fn with_observers<OT>(self, observers: OT) -> WithObservers<Self, OT>where
Self: Sized,
OT: ObserversTuple<I, S>,
sourcefn post_run_reset(&mut self)
fn post_run_reset(&mut self)
Custom Reset Handler, e.g., to reset timers
sourceimpl<E, I, OT, S, SOT> HasObservers<I, OT, S> for ShadowExecutor<E, I, S, SOT>where
I: Debug,
S: Debug,
E: HasObservers<I, OT, S>,
OT: ObserversTuple<I, S>,
SOT: ObserversTuple<I, S>,
impl<E, I, OT, S, SOT> HasObservers<I, OT, S> for ShadowExecutor<E, I, S, SOT>where
I: Debug,
S: Debug,
E: HasObservers<I, OT, S>,
OT: ObserversTuple<I, S>,
SOT: ObserversTuple<I, S>,
sourceimpl<E, EM, I, OT, S, SOT, Z> Stage<ShadowExecutor<E, I, S, SOT>, EM, S, Z> for ShadowTracingStage<E, EM, I, OT, S, SOT, Z>where
I: Input,
E: Executor<EM, I, S, Z> + HasObservers<I, OT, S>,
OT: ObserversTuple<I, S>,
SOT: ObserversTuple<I, S>,
S: HasClientPerfMonitor + HasExecutions + HasCorpus<I> + Debug,
impl<E, EM, I, OT, S, SOT, Z> Stage<ShadowExecutor<E, I, S, SOT>, EM, S, Z> for ShadowTracingStage<E, EM, I, OT, S, SOT, Z>where
I: Input,
E: Executor<EM, I, S, Z> + HasObservers<I, OT, S>,
OT: ObserversTuple<I, S>,
SOT: ObserversTuple<I, S>,
S: HasClientPerfMonitor + HasExecutions + HasCorpus<I> + Debug,
Auto Trait Implementations
impl<E, I, S, SOT> RefUnwindSafe for ShadowExecutor<E, I, S, SOT>where
E: RefUnwindSafe,
I: RefUnwindSafe,
S: RefUnwindSafe,
SOT: RefUnwindSafe,
impl<E, I, S, SOT> Send for ShadowExecutor<E, I, S, SOT>where
E: Send,
I: Send,
S: Send,
SOT: Send,
impl<E, I, S, SOT> Sync for ShadowExecutor<E, I, S, SOT>where
E: Sync,
I: Sync,
S: Sync,
SOT: Sync,
impl<E, I, S, SOT> Unpin for ShadowExecutor<E, I, S, SOT>where
E: Unpin,
I: Unpin,
S: Unpin,
SOT: Unpin,
impl<E, I, S, SOT> UnwindSafe for ShadowExecutor<E, I, S, SOT>where
E: UnwindSafe,
I: UnwindSafe,
S: UnwindSafe,
SOT: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Tail, T> Prepend<T> for Tail
impl<Tail, T> Prepend<T> for Tail
type PreprendResult = Tail
type PreprendResult = Tail
sourcefn prepend(self, value: T) -> (T, <Tail as Prepend<T>>::PreprendResult)
fn prepend(self, value: T) -> (T, <Tail as Prepend<T>>::PreprendResult)
Prepend a value to this tuple, returning a new tuple with prepended value.