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.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§