use crate::traits::{Edges, GrowableEdges, SparseMatrixMut};
pub trait EdgesBuilder {
type Edges: Edges;
type IntermediateEdges: GrowableEdges;
type EdgeIterator: IntoIterator<Item = <Self::Edges as Edges>::Edge>;
#[must_use]
fn ignore_duplicates(self) -> Self;
fn should_ignore_duplicates(&self) -> bool;
#[must_use]
fn expected_number_of_edges(self, number_of_edges: <Self::Edges as Edges>::EdgeId) -> Self;
fn get_expected_number_of_edges(&self) -> Option<<Self::Edges as Edges>::EdgeId>;
#[must_use]
fn expected_shape(
self,
shape: <<Self::IntermediateEdges as GrowableEdges>::GrowableMatrix as SparseMatrixMut>::MinimalShape,
) -> Self;
fn get_expected_shape(&self) -> Option<<<Self::IntermediateEdges as GrowableEdges>::GrowableMatrix as SparseMatrixMut>::MinimalShape>;
#[must_use]
fn edges(self, edges: Self::EdgeIterator) -> Self;
}