Skip to main content

Analyzer

Trait Analyzer 

Source
pub trait Analyzer: Send + Sync {
    // Required methods
    fn evaluate(&self, data: &DifferentialSet) -> SampleDecision;
    fn oracle_class(&self) -> OracleClass;

    // Provided methods
    fn analyze(
        &self,
        data: &DifferentialSet,
    ) -> Result<OracleResult, AnalyzerError> { ... }
    fn required_samples(&self) -> usize { ... }
}
Expand description

Analyzes paired baseline/probe exchanges and produces an oracle verdict.

Implementors must be Send + Sync so they can be held in shared state across async tasks. All methods take &self — analyzers are stateless with respect to individual probe runs.

Required Methods§

Source

fn evaluate(&self, data: &DifferentialSet) -> SampleDecision

Incrementally evaluate a growing DifferentialSet.

Called after each new exchange pair is added. Returns NeedMore until enough samples are collected to determine stability, then Complete with the final result.

Source

fn oracle_class(&self) -> OracleClass

Oracle class this analyzer handles — used for result attribution.

Provided Methods§

Source

fn analyze(&self, data: &DifferentialSet) -> Result<OracleResult, AnalyzerError>

Analyze a complete DifferentialSet and return a verdict.

One-shot wrapper around evaluate. For incremental sampling, call evaluate directly.

§Errors

Returns AnalyzerError::InsufficientSamples when fewer samples than required_samples were supplied.

Source

fn required_samples(&self) -> usize

Minimum number of exchange pairs needed before analyze returns Ok.

Default is 1. Analyzers with adaptive sampling loops override this.

Implementors§