use petgraph::stable_graph::EdgeIndex;
use serde::{Deserialize, Serialize};
use super::node::NodeId;
pub type EdgeId = EdgeIndex<u32>;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CodeEdge {
pub id: EdgeId,
pub kind: EdgeKind,
pub source: NodeId,
pub target: NodeId,
pub weight: f64,
pub location: Option<(usize, usize)>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum EdgeKind {
Contains,
Calls,
Imports,
Implements,
}
impl EdgeKind {
pub fn as_str(&self) -> &'static str {
match self {
EdgeKind::Contains => "contains",
EdgeKind::Calls => "calls",
EdgeKind::Imports => "imports",
EdgeKind::Implements => "implements",
}
}
}