//! Graph data source abstraction for table functions that need graph access.
//!
//! `akar-function` cannot depend on `akar-graph` (the dependency graph runs
//! `akar-graph -> akar-storage -> akar-vector -> akar-function`), so graph
//! algorithms and table-function closures receive graph data through this
//! trait instead. The query processor (which owns the storage `TableCatalog`)
//! builds a concrete `GraphDataSource` from the catalog's node/rel tables.
/// A directed or undirected edge in the database graph.
/// Provides the node/edge topology backing the graph for GDS table functions.
///
/// Implementors snapshot the graph at call time. Edges whose source or
/// destination is `u64::MAX` (soft-deleted rows) are excluded.