Skip to main content

BfsResult

Struct BfsResult 

Source
pub struct BfsResult {
    pub order: Vec<VertexId>,
    pub rank: Vec<Option<usize>>,
    pub parents: Vec<Option<VertexId>>,
    pub pred: Vec<Option<VertexId>>,
    pub succ: Vec<Option<VertexId>>,
    pub dist: Vec<Option<usize>>,
    pub stopped: bool,
}
Expand description

Results of a breadth-first search (Graph::bfs, Graph::bfs_with).

The per-vertex vectors (rank, parents, pred, succ, dist) have one entry per vertex of the graph, None for vertices that were not visited (e.g. unreachable, outside the restricted set, or not reached because the visitor stopped the search).

Fields§

§order: Vec<VertexId>

The visited vertices, in visiting order.

§rank: Vec<Option<usize>>

The rank (position in order) of each vertex.

§parents: Vec<Option<VertexId>>

The parent of each vertex in the BFS forest: None for the roots of the search trees and for unvisited vertices (igraph itself already assigns a parent to vertices that were queued but not yet visited when the visitor stopped the search; the bindings report them as None too, so that parents always describes the visited forest).

§pred: Vec<Option<VertexId>>

The vertex visited just before each vertex: None for the roots of the search trees and for unvisited vertices.

§succ: Vec<Option<VertexId>>

The vertex visited just after each vertex: None for the last vertex of each search tree and for unvisited vertices. When the visitor stops the search, the successor of the vertex it stopped at is None too.

§dist: Vec<Option<usize>>

The distance of each vertex from the root of its search tree.

§stopped: bool

true if the visitor closure returned ControlFlow::Break, so that the search ended early.

Implementations§

Source§

impl BfsResult

Source

pub fn is_visited(&self, v: VertexId) -> bool

Whether vertex v was visited by the search.

Source

pub fn roots(&self) -> Vec<VertexId> ⓘ

The roots of the search trees, in the order they were used.

In an undirected graph searched with BfsOptions::unreachable set (and no restriction), there is exactly one root per connected component, see Graph::connected_components.

Source

pub fn path_to(&self, v: VertexId) -> Option<Vec<VertexId>>

The path of the BFS forest from the root of v’s search tree down to v (a shortest path in unweighted graphs), or None if v was not visited. Graph::get_shortest_path computes a single such path directly (also with weights).

Trait Implementations§

Source§

impl Clone for BfsResult

Source§

fn clone(&self) -> BfsResult

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BfsResult

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for BfsResult

Source§

impl PartialEq for BfsResult

Source§

fn eq(&self, other: &BfsResult) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for BfsResult

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.