Struct MultiGraph

Source
pub struct MultiGraph<N: Node, E: EdgeWeight, Ix: IndexType = u32> { /* private fields */ }
Expand description

A multi-graph structure that supports parallel edges

Unlike Graph, MultiGraph allows multiple edges between the same pair of nodes. This is useful for modeling scenarios where multiple connections of different types or weights can exist between nodes.

Implementations§

Source§

impl<N: Node, E: EdgeWeight, Ix: IndexType> MultiGraph<N, E, Ix>

Source

pub fn new() -> Self

Create a new empty multi-graph

Source

pub fn add_node(&mut self, node: N)

Add a node to the graph

Source

pub fn add_edge(&mut self, source: N, target: N, weight: E) -> usize
where N: Clone, E: Clone,

Add an edge between two nodes with a given weight Returns the edge ID for reference

Source

pub fn get_edges_between(&self, source: &N, target: &N) -> Vec<(usize, &E)>
where E: Clone,

Get all parallel edges between two nodes

Source

pub fn remove_edge(&mut self, edge_id: usize) -> Result<Edge<N, E>>
where N: Clone, E: Clone,

Remove an edge by its ID

Source

pub fn nodes(&self) -> Iter<'_, N>

Get all nodes in the graph

Source

pub fn edges(&self) -> Values<'_, usize, Edge<N, E>>

Get all edges in the graph

Source

pub fn node_count(&self) -> usize

Number of nodes in the graph

Source

pub fn edge_count(&self) -> usize

Number of edges in the graph

Source

pub fn neighbors_with_edges(&self, node: &N) -> Option<&Vec<(N, E, usize)>>

Get neighbors of a node with edge weights and IDs

Source

pub fn neighbors(&self, node: &N) -> Vec<&N>

Get simple neighbors (without edge information)

Source

pub fn has_node(&self, node: &N) -> bool

Check if the graph contains a node

Source

pub fn degree(&self, node: &N) -> usize

Get the degree of a node (total number of incident edges)

Trait Implementations§

Source§

impl<N: Node, E: EdgeWeight, Ix: IndexType> Default for MultiGraph<N, E, Ix>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<N, E, Ix> Freeze for MultiGraph<N, E, Ix>

§

impl<N, E, Ix> RefUnwindSafe for MultiGraph<N, E, Ix>

§

impl<N, E, Ix> Send for MultiGraph<N, E, Ix>
where Ix: Send,

§

impl<N, E, Ix> Sync for MultiGraph<N, E, Ix>
where Ix: Sync,

§

impl<N, E, Ix> Unpin for MultiGraph<N, E, Ix>
where Ix: Unpin, N: Unpin, E: Unpin,

§

impl<N, E, Ix> UnwindSafe for MultiGraph<N, E, Ix>
where N: UnwindSafe, Ix: UnwindSafe, E: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V