#![deny(clippy::all)]
#![warn(clippy::pedantic)]
#![deny(missing_docs)]
pub mod existence;
pub mod signals;
use parlov_core::{DifferentialSet, OracleClass, OracleResult};
pub enum SampleDecision {
Complete(Box<OracleResult>),
NeedMore,
}
pub trait Analyzer: Send + Sync {
fn evaluate(&self, data: &DifferentialSet) -> SampleDecision;
fn oracle_class(&self) -> OracleClass;
fn analyze(&self, data: &DifferentialSet) -> OracleResult {
match self.evaluate(data) {
SampleDecision::Complete(result) => *result,
SampleDecision::NeedMore => {
panic!("analyze called with insufficient samples; use evaluate to drive sampling")
}
}
}
}