rsdiff_graphs/dcg/
edge.rs

1/*
2    Appellation: edge <module>
3    Contrib: FL03 <jo3mccain@icloud.com>
4*/
5use crate::NodeIndex;
6use rsdiff::id::IndexId;
7
8#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
9#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
10pub struct Edge<Idx = NodeIndex> {
11    args: Vec<Idx>,
12    source: IndexId<Idx>,
13}
14
15impl<Idx> Edge<Idx> {
16    pub fn new(args: impl IntoIterator<Item = Idx>, source: Idx) -> Self {
17        Self {
18            args: Vec::from_iter(args),
19            source: IndexId::from_index(source),
20        }
21    }
22
23    pub fn get_id(&self) -> usize {
24        self.source.id()
25    }
26
27    pub fn get_index(&self) -> &Idx {
28        self.source.index()
29    }
30
31    pub fn source(&self) -> &IndexId<Idx> {
32        &self.source
33    }
34
35    pub fn into_source(self) -> IndexId<Idx> {
36        self.source
37    }
38}