pub mod imports;
pub use self::imports::Imports;
pub mod trace;
pub use self::trace::Trace;
pub mod dfs;
pub use self::dfs::Dfs;
#[cfg(feature = "std")]
pub mod metrics;
#[cfg(feature = "std")]
pub use self::metrics::Metrics;
#[cfg(feature = "std")]
pub mod acyclic;
#[cfg(feature = "std")]
pub use self::acyclic::Acyclic;
pub trait Evaluator {
type Id;
type Module;
type Error;
fn is_empty(&self) -> bool;
fn next(&mut self) -> Option<Self::Id>;
fn eval(
&mut self,
id: Self::Id,
imports: Imports<Self::Id>,
module: Self::Module,
) -> Result<(), Self::Error>;
fn finish(self) -> Option<Self::Module>;
}