pub trait TMinMutationalStage<CS, E, EM, F1, F2, M, OT, Z>: Stage<E, EM, Z> + FeedbackFactory<F2, CS::State, OT>where
    Self::State: HasCorpus + HasExecutions + HasMaxSize + HasClientPerfMonitor,
    <Self::State as UsesInput>::Input: HasLen + Hash,
    CS: Scheduler<State = Self::State>,
    E: Executor<EM, Z> + HasObservers<Observers = OT, State = Self::State>,
    EM: EventFirer<State = Self::State>,
    F1: Feedback<Self::State>,
    F2: Feedback<Self::State>,
    M: Mutator<Self::Input, Self::State>,
    OT: ObserversTuple<CS::State>,
    Z: ExecutionProcessor<OT, State = Self::State> + ExecutesInput<E, EM> + HasFeedback<Feedback = F1> + HasScheduler<Scheduler = CS>,
{ fn mutator(&self) -> &M; fn mutator_mut(&mut self) -> &mut M; fn iterations(
        &self,
        state: &mut CS::State,
        corpus_idx: CorpusId
    ) -> Result<usize, Error>; fn perform_minification(
        &mut self,
        fuzzer: &mut Z,
        executor: &mut E,
        state: &mut CS::State,
        manager: &mut EM,
        base_corpus_idx: CorpusId
    ) -> Result<(), Error> { ... } }
Expand description

Mutational stage which minimizes corpus entries.

You must provide at least one mutator that actually reduces size.

Required Methods§

source

fn mutator(&self) -> &M

The mutator registered for this stage

source

fn mutator_mut(&mut self) -> &mut M

The mutator registered for this stage (mutable)

source

fn iterations(
    &self,
    state: &mut CS::State,
    corpus_idx: CorpusId
) -> Result<usize, Error>

Gets the number of iterations this mutator should run for.

Provided Methods§

source

fn perform_minification(
    &mut self,
    fuzzer: &mut Z,
    executor: &mut E,
    state: &mut CS::State,
    manager: &mut EM,
    base_corpus_idx: CorpusId
) -> Result<(), Error>

Runs this (mutational) stage for new objectives

Implementors§

source§

impl<CS, E, EM, F1, F2, FF, M, OT, Z> TMinMutationalStage<CS, E, EM, F1, F2, M, OT, Z> for StdTMinMutationalStage<CS, E, EM, F1, F2, FF, M, OT, Z>where
    CS: Scheduler,
    E: HasObservers<Observers = OT, State = CS::State> + Executor<EM, Z>,
    EM: EventFirer<State = CS::State>,
    F1: Feedback<CS::State>,
    F2: Feedback<CS::State>,
    FF: FeedbackFactory<F2, CS::State, OT>,
    <CS::State as UsesInput>::Input: HasLen + Hash,
    M: Mutator<CS::Input, CS::State>,
    OT: ObserversTuple<CS::State>,
    CS::State: HasClientPerfMonitor + HasCorpus + HasExecutions + HasMaxSize,
    Z: ExecutionProcessor<OT, State = CS::State> + ExecutesInput<E, EM> + HasFeedback<Feedback = F1> + HasScheduler<Scheduler = CS>,