//! So far, we have eight types of hypergraphs.
//!
//! The directed and undirected hypergraphs are again, what you'd expect. We also have
//! Uniform hypergraphs, both directed and undirected. Uniform hypergraphs are ones where
//! all edges have the same number of nodes. There's a whole bunch of nice properties
//! that go with it, chief among them being that plain old graphs *are* uniform hypergraphs.
//!
//! Multiplex hypergraphs, from the original hypergraphx, let you have multiple layers,
//! each of them with their own type of edge. I'm not very happy with this implementation
//! myself, because it uses `Any`, and dynamic typing bad, but also because there are
//! a few things you cannot do with them. There's *two* multiplex hypergraph types, as
//! you will see in those docs.
//!
//! Temporal graphs, again from the original hypergraphx, are hypergraphs where edges
//! are *active* only at certain times. I like this implementation. It has a normal
//! hypergraph inside it, and Deref's to that for any of the standard stuff,
//! `[Di]GraphProperties` and `Weights` and other traits for one. It 'overloads' the
//! `(add|remove)_node[s]` and `(add|remove)_edge[s]` methods, i.e. implements a method
//! of the same name. Since the behaviour of `Deref` of all things is unlikely to change,
//! this means that the inner type's methods are effectively unusable, and you have to go
//! through the temporal parts of the temporal hypergraph.
pub use DiGraph;
pub use Graph;