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§
Sourcefn evaluate(&self, data: &DifferentialSet) -> SampleDecision
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.
Sourcefn oracle_class(&self) -> OracleClass
fn oracle_class(&self) -> OracleClass
Oracle class this analyzer handles — used for result attribution.
Provided Methods§
Sourcefn analyze(&self, data: &DifferentialSet) -> Result<OracleResult, AnalyzerError>
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.
Sourcefn required_samples(&self) -> usize
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".