1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
use super::*;
/// # Arguments
///
/// * `index`:
///
/// returns: Option<Cow<Self::Node>>
///
/// # Examples
///
/// ```
/// use graph_theory::GraphEngine;
/// ```
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum EdgeInsertID {
/// No need to insert anything
Nothing,
/// Inserted one node, return the node id
OneEdge(usize),
/// Inserted two nodes, return these node ids
TwoEdges(usize, usize),
}
/// # Arguments
///
/// * `index`:
///
/// returns: Option<Cow<Self::Node>>
///
/// # Examples
///
/// ```
/// use graph_theory::GraphEngine;
/// ```
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum EdgeQuery {
/// No need to remove anything
EdgeID(usize),
/// Removed one node, return the node id
Directed(DirectedEdge),
/// Removed two nodes, return these node ids
Undirected(UndirectedEdge),
}
impl From<usize> for EdgeQuery {
fn from(value: usize) -> Self {
Self::EdgeID(value)
}
}
impl From<UndirectedEdge> for EdgeQuery {
fn from(edge: UndirectedEdge) -> Self {
Self::Undirected(edge)
}
}
impl From<DirectedEdge> for EdgeQuery {
fn from(edge: DirectedEdge) -> Self {
Self::Directed(edge)
}
}