## Modules

## Structs

Represents a single directed `Edge`

and an optional `label`

,
which can be removed by using the zero-sized type `()`

.
It is recommended to use the corresponding `::new_*`

methods.

A `Graph`

is in principle a owning tuple of Nodes and Edges.

A `GraphGrammar`

yields different graphs, that are constructible using a starting graph and a
list of transformations (productions). It is also used to further transform generated graphs
using `evolve`

. Refer to `generate_random`

.

An `Isomorphism`

is a map from the matching graph to the matched subgraph. You most likely
don’t want to construct it, but use the `match_subgraph`

-method.

Represents a single `Node`

. It has an `id`

entifier and an optional `label`

,
which can be removed by using the zero-sized type `()`

A double-pushout production (DPO). For a description of the theory behind
it please refer to the crates `README.md`

.

Used for randomly evolving a graph using a `GraphGrammar`

to specify
when to stop trying random productions. All fields are optional, but
at least one must be used. Options can be set using the builder pattern
on a `new`

ly created struct.

## Functions

Checks if the two given graphs are (totally) isomorphic to each other, by checking if there
exists a partial isomorphism from lhs to rhs and in the other direcetion. This function is
*very* expensive.

Tries to find an partial isomorphism from `subgraph`

to `graph`

. `subgraph`

can be a
disconnected graph. If `None`

is returned if there is no mapping.