pub struct Topology { /* private fields */ }Expand description
Topology.
This data type represents the topology of a graph, which allows to find the
outgoing and incoming edges for each node in linear time. The topology does
not retain edge weights, since we only need them during graph construction,
as in our case, they’re not relevant for traversal. Moreover, it contains
the Distance matrix that allows to find the shortest path between two
nodes in the graph, or determine whether they’re reachable at all.
The graph topology must be considered immutable, as Adjacency lists
can’t be mutated anyway, and represents the conversion of a graph into an
executable form. It’s used during Traversal, so all nodes are visited
in topological order.
Cloning is very cheap, since both incoming and outgoing edges are stored in
Rc smart pointers, so they can be shared among multiple traversals.
Implementations§
Source§impl Topology
impl Topology
Sourcepub fn new<T, W>(builder: &Builder<T, W>) -> Selfwhere
W: Clone,
pub fn new<T, W>(builder: &Builder<T, W>) -> Selfwhere
W: Clone,
Creates a topology of the given graph.
This method constructs a topology from a graph builder, one of the key
components of an executable Graph. Thus, it’s usually not needed
to create a topology manually, as it’s automatically created when the
graph is built using the Builder::build method.
§Examples
use zrx_graph::{Graph, Topology};
// Create graph builder and add nodes
let mut builder = Graph::builder();
let a = builder.add_node("a");
let b = builder.add_node("b");
let c = builder.add_node("c");
// Create edges between nodes
builder.add_edge(a, b, 0)?;
builder.add_edge(b, c, 0)?;
// Create topology
let topology = Topology::new(&builder);Trait Implementations§
Auto Trait Implementations§
impl Freeze for Topology
impl RefUnwindSafe for Topology
impl !Send for Topology
impl !Sync for Topology
impl Unpin for Topology
impl UnwindSafe for Topology
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)