pub fn init(storage: S) -> Self {
        SimpleGraph {
            storage,

            phantom_e: PhantomData,
            phantom_w: PhantomData,
            phantom_dir: PhantomData,
        }
    }
/// `SimpleGraph` defines multiple types with different combination of values for generic parameters.
/// These types are:
/// * [`MatGraph`](crate::graph::MatGraph): A simple graph using [`Mat`](crate::storage::Mat) as its storage.
/// * [`FlowMatGraph`](crate::graph::FlowMatGraph): A simple graph using [`FlowMat`](crate::storage::FlowMat) as its storage.
/// * [`ListGraph`](crate::graph::ListGraph): A simple graph using [`List`](crate::storage::List) as its storage.
/// * [`FlowListGraph`](crate::graph::FlowListGraph): A simple graph using [`FlowList`](crate::storage::FlowList) as its storage.
///
/// # Arguments
/// `storage`: Storage to use.
///
/// # Returns
/// An empty simple graph.
///
/// # Examples
/// ```
/// use prepona::prelude::*;
/// use prepona::storage::{Mat, DiList};
/// use prepona::graph::{MatGraph, ListGraph};
///
/// // A simple graph that uses a adjacency matrix as its storage with undirected edges of type usize.
/// let mat_graph = MatGraph::init(Mat::<usize>::init());
///
/// // A simple graph that uses adjacency list as its storage with directed edges of type u32.
/// let list_graph = ListGraph::init(DiList::<u32>::init());
/// ```
`SimpleGraph` defines multiple types with different combination of values for generic parameters.
` SimpleGraph ` defines multiple types with different combination of values for generic parameters .
pub fn init(storage: S) -> Self {
        SimpleGraph {
            storage,
            phantom_e: PhantomData,
            phantom_w: PhantomData,
            phantom_dir: PhantomData,
        }
    }
pub fn init ( storage : S ) -> Self { SimpleGraph { storage , phantom_e : PhantomData , phantom_w : PhantomData , phantom_dir : PhantomData , } }
`SimpleGraph` defines multiple types with different combination of values for generic parameters.
` SimpleGraph ` defines multiple types with different combination of values for generic parameters .
storage
S
An empty simple graph.
An empty simple graph .
storage
S
examples
```
use prepona::prelude::*;
use prepona::storage::{Mat, DiList};
use prepona::graph::{MatGraph, ListGraph}.

A simple graph that uses a adjacency matrix as its storage with undirected edges of type usize.
let mat_graph = MatGraph::init(Mat::::init()).

A simple graph that uses adjacency list as its storage with directed edges of type u32.
let list_graph = ListGraph::init(DiList::::init());
```
` ` ` use prepona :: prelude :: * ; use prepona :: storage :: { Mat DiList } ; use prepona :: graph :: { MatGraph ListGraph } . A simple graph that uses a adjacency matrix as its storage with undirected edges of type usize . let mat_graph = MatGraph :: init ( Mat :::: init () ) . A simple graph that uses adjacency list as its storage with directed edges of type u32 . let list_graph = ListGraph :: init ( DiList :::: init () ) ; ` ` `