use super::{node::Node, test_parameters::TestParameters};
pub trait Algorithm<
InputData: Send + Sync,
OutputData: Send + Sync,
Solution: Clone + Send + Sync,
FeatureFlags,
>
{
fn output(
&self,
node: &Node<Solution>,
input: &InputData,
params: &TestParameters<FeatureFlags>,
) -> OutputData;
fn allocate_node(
&self,
input: &InputData,
params: &TestParameters<FeatureFlags>,
) -> Node<Solution>;
fn combine_node(
&self,
left: Node<Solution>,
right: Node<Solution>,
params: &TestParameters<FeatureFlags>,
) -> Node<Solution>;
}