use std::marker::PhantomData;
use std::ops::Range;
use crate::DerivationTree;
pub trait DerivationHeuristic<T:PartialEq> {
fn apply(&self,index: usize, tree: &DerivationTree<T>) -> Range<usize>;
}
pub type DefaultDerivationHeuristic<T> = AssignmentHeuristic<T>;
#[derive(Copy,Clone,Debug,PartialEq)]
pub struct AssignmentHeuristic<T:PartialEq> {
dummy: PhantomData<T>
}
impl<T:PartialEq> DerivationHeuristic<T> for AssignmentHeuristic<T> {
fn apply(&self, index: usize, tree: &DerivationTree<T>) -> Range<usize> {
todo!()
}
}