use crate::model::Graph;
use super::error::TraceError;
use super::facade::TraceType;
use super::TraceResult;
pub trait TraceEngine: Send + Sync {
fn trace(
&self,
symbol: &str,
trace_type: TraceType,
depth: usize,
) -> std::result::Result<TraceResult, TraceError>;
fn load_graph(
&self,
symbol: &str,
depth: usize,
max_nodes: usize,
) -> std::result::Result<(Graph, bool), TraceError>;
}
#[cfg(test)]
const _: () = {
fn _assert_object_safe(_: &dyn TraceEngine) {}
fn _assert_send_sync<T: Send + Sync + ?Sized>() {}
fn _check() {
_assert_send_sync::<dyn TraceEngine>();
let _ = _assert_object_safe;
}
};