use serde::Deserialize;
use serde::Serialize;
use crate::cc::state::State;
use crate::codebook::Codebook;
use crate::data::Datum;
use crate::data::SummaryStatistics;
use crate::interface::HasCodebook;
use crate::metadata::latest::Metadata;
use crate::HasData;
use crate::HasStates;
use crate::Oracle;
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(deny_unknown_fields, from = "Metadata", into = "Metadata")]
pub struct DatalessOracle {
pub states: Vec<State>,
pub codebook: Codebook,
}
impl From<Oracle> for DatalessOracle {
fn from(oracle: Oracle) -> Self {
Self {
states: oracle.states,
codebook: oracle.codebook,
}
}
}
impl HasStates for DatalessOracle {
#[inline]
fn states(&self) -> &Vec<State> {
&self.states
}
#[inline]
fn states_mut(&mut self) -> &mut Vec<State> {
&mut self.states
}
}
impl HasData for DatalessOracle {
#[inline]
fn summarize_feature(&self, _ix: usize) -> SummaryStatistics {
SummaryStatistics::None
}
#[inline]
fn cell(&self, _row_ix: usize, _col_ix: usize) -> Datum {
Datum::Missing
}
}
impl HasCodebook for DatalessOracle {
fn codebook(&self) -> &Codebook {
&self.codebook
}
}