mod algo;
mod config;
mod kernel;
pub mod native;
mod progress;
mod registry;
use crate::{dsl::StateRow, graph::GraphId};
pub use algo::RunOptions;
pub use config::{TraversalConfig, TraversalConfigBuilder, TraversalStrategy};
pub use kernel::{EdgeCtx, Kernel};
pub use native::search_native;
pub use registry::{
BoxedRun, KernelEntry, RunKernel, boxed_run, build_kernel, inventory, register_kernel,
};
#[derive(Debug, Clone, PartialEq)]
pub struct GraphPath<'a> {
pub nodes: Vec<GraphId<'a>>,
pub edges: Vec<GraphId<'a>>,
pub state: StateRow,
pub intermediate_states: Option<Vec<StateRow>>,
}
#[derive(Debug)]
pub struct SearchResult<'a> {
pub paths: Vec<GraphPath<'a>>,
pub stats: SearchStats,
}
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
pub struct SearchStats {
pub start_nodes: usize,
pub path_entries: usize,
pub evaluated_edges: usize,
pub accepted_edges: usize,
pub rejected_edges: usize,
pub skipped_revisits: usize,
pub stopped_paths: usize,
pub max_depth: usize,
}