pub trait ModelInterface: Sized {
type Fact: FactInterface;
type Runnable: RunnableInterface;
type Value: ValueInterface;
Show 19 methods
// Required methods
fn input_count(&self) -> Result<usize>;
fn output_count(&self) -> Result<usize>;
fn input_name(&self, id: usize) -> Result<String>;
fn output_name(&self, id: usize) -> Result<String>;
fn set_output_names(
&mut self,
outputs: impl IntoIterator<Item = impl AsRef<str>>
) -> Result<()>;
fn input_fact(&self, id: usize) -> Result<Self::Fact>;
fn output_fact(&self, id: usize) -> Result<Self::Fact>;
fn declutter(&mut self) -> Result<()>;
fn optimize(&mut self) -> Result<()>;
fn into_decluttered(self) -> Result<Self>;
fn into_optimized(self) -> Result<Self>;
fn into_runnable(self) -> Result<Self::Runnable>;
fn concretize_symbols(
&mut self,
values: impl IntoIterator<Item = (impl AsRef<str>, i64)>
) -> Result<()>;
fn half(&mut self) -> Result<()>;
fn pulse(
&mut self,
name: impl AsRef<str>,
value: impl AsRef<str>
) -> Result<()>;
fn cost_json(&self) -> Result<String>;
fn profile_json<I, V, E>(&self, inputs: Option<I>) -> Result<String>
where I: IntoIterator<Item = V>,
V: TryInto<Self::Value, Error = E>,
E: Into<Error> + Debug;
fn property_keys(&self) -> Result<Vec<String>>;
fn property(&self, name: impl AsRef<str>) -> Result<Self::Value>;
}