Skip to main content

GraphStats

Struct GraphStats 

Source
pub struct GraphStats {
    pub node_count: usize,
    pub edge_count: usize,
    pub density: f64,
    pub scc_count: usize,
    pub cycle_count: usize,
    pub weakly_connected_component_count: usize,
    pub isolated_node_count: usize,
    pub max_in_degree: usize,
    pub max_out_degree: usize,
    pub reduced_node_count: usize,
    pub reduced_edge_count: usize,
}
Expand description

Summary statistics for a dependency graph.

Computed from a NormalizedGraph by GraphStats::from_normalized. All counts refer to the original (non-condensed) graph unless otherwise noted.

Fields§

§node_count: usize

Number of items (nodes) in the graph.

§edge_count: usize

Number of blocking edges in the original graph.

§density: f64

Graph density: edge_count / (node_count * (node_count - 1)). Ranges from 0.0 (no edges) to 1.0 (all possible edges present). Zero for graphs with 0 or 1 node.

§scc_count: usize

Number of strongly connected components.

Equals node_count in a fully acyclic graph.

§cycle_count: usize

Number of SCCs with more than one member (dependency cycles).

§weakly_connected_component_count: usize

Number of weakly connected components (disjoint subgraphs).

§isolated_node_count: usize

Number of nodes with no in-edges and no out-edges.

§max_in_degree: usize

Maximum in-degree (most incoming blocking edges on one node).

§max_out_degree: usize

Maximum out-degree (most outgoing blocking edges from one node).

§reduced_node_count: usize

Number of nodes in the condensed (reduced) graph.

Equals scc_count — provided for convenience.

§reduced_edge_count: usize

Number of edges in the transitively-reduced condensed graph.

Implementations§

Source§

impl GraphStats

Source

pub fn from_normalized(ng: &NormalizedGraph) -> Self

Compute statistics from a NormalizedGraph.

Source

pub const fn is_flat(&self) -> bool

Return true if the graph has no blocking edges.

Source

pub const fn has_cycles(&self) -> bool

Return true if the graph contains at least one dependency cycle.

Source

pub fn reduction_ratio(&self) -> f64

Return the reduction ratio: how many edges were removed by transitive reduction vs the raw edge count.

Returns 0.0 if there are no edges in the original graph.

Trait Implementations§

Source§

impl Clone for GraphStats

Source§

fn clone(&self) -> GraphStats

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for GraphStats

Source§

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

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

impl PartialEq for GraphStats

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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 GraphStats

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,