Expand description
Re-exports§
pub use super::frame::*;
Modules§
- attrs
- this module implements the
GraphProps
trait and provides a concrete implementation with theAttrs
struct. These objects are used to define the attributes of a hypergraph such as the type of index used to identify vertices and edges as well as the type of graph (directed or undirected). - edge
- this module focuses on the
Edge
implementation, providing additional types, traits, and representations for edges in a hypergraph. - error
- this module implements the
Error
type for thershyper
crate. - idx
- the
idx
module provides theIndexBase
, a generic index type used to establish a solid foundation for all indices used by the hypergraph. Type aliases, such asEdgeId
andVertexId
, are provided for convenience, reducing the need to continually specify the index type when working with hypergraphs. - node
- this module provides the
Node
implmenetation alongisde the several traits such asRawNode
andRawPoint
focused on establishing a common, well-defined interface for weighted and unweighted “points” within a hypergraph. - prelude
- rel
- this module establishes relational traits and implementations for components of a hypergraph.
- traits
- this module contains various traits used throughout to establish common interfaces and behaviors
- types
- this module provides various types used throughout the library
- weight
- this module implements a generic
Weight
wrapper type for representing the weights of entries within the hypergraph. Additionally, the module provides theWeightless
type alias for cases where there is no associated weight.
Structs§
- Attrs
Attrs
is a generic implementation of theGraphProps
trait, enabling the definition of hypergraphs with different index types and graph kinds (i.e.,Directed
orUndirected
).- Directed
- A marker type representing a directed graph type
- Edge
- The
Edge
implementation essentially wraps theLink
type with aWeight
- Edge
Index - A kind of index for edges in a graph
- Index
Base - A generic
IndexBase
implementation used to represent various kinds of indices - Index
Kind Iter - An iterator over the variants of IndexKind
- IsWeighted
- Link
- Here, a
Link
essentially defines the layout of an edge within a hypergraph. The implementation is generic over the type of domain it contains, which can be a set of vertices or any other structure that implements theDomain
trait. - Mode
Iter - An iterator over the variants of Mode
- Node
- The
Node
implementation generically associates aVertexId
with aWeight
. - UnWeight
- the
Weightless
struct is a marker type that represents the absence of a weight. - UnWeighted
- Undirected
- A marker type representing an undirected graph type
- Vertex
Index - A kind of index for vertices in a graph
- Weight
- The
Weight
type is a wrapper around a generic typeT
that provides additional functionality for working with weights in a graph context.
Enums§
- Error
- The error type for this crate
- Grid
- the
Grid
enumerate the possible variations of indicies that can be used within the scope of a hypergraph. This entity is useful for enabling “compoite” collections of indicies for iteration, traversal, etc. - Index
Kind - Auto-generated discriminant enum variants
- Mode
Mode
enumerates the possible graph variants enabling dynamic dispatch features.
Traits§
- AddStep
AddStep
is a trait that defines a method to add a step to the current value, replacing- Apply
- The
Apply
trait defines a generic, transformative operation that can be applied to an object of typeRhs
. - AsWeight
- a trait for converting a type into a valid
Weight
- Binary
Domain - The
BinaryDomain
trait extends theRawDomain
trait to provide specific methods for binary edges, which are edges that connect exactly two vertices. - Combine
Combine
defines a common interface for merging two edges in a hypergraph.- Concat
Concat
defines an interface for concatenating two entities into another- Contains
Contains
defines a common interface for types able to verify if they contain a given key or index; the trait strives to emulate the behavior of thecontains
method found in standard collections such asHashSet
orBTreeSet
.- Domain
- An
Domain
is a trait is a specialization of theRawDomain
trait that represents a store for edges, which are collections of vertices. It is used to define the behavior - Graph
Index - This trait is used to define various kinds of indices that are used to compose graphical structures.
- Graph
Props - The
GraphProps
trait abstracts several generic types used to define a hyper graph into a single entity. - Graph
Type GraphType
is a marker trait for graph types.- Hash
Index - The
HashIndex
trait extends the [StdIndex
] trait to include additional operations and behaviours commonly expected from indices in a hypergraph. - Hyper
Graph - The
HyperGraph
trait directly extends theRawHyperGraph
trait to provide additional utilities and constructors for implementors while establishing a more robust interface for hypergraphs. This trait is designed to abstract the basic behaviour of hypergraphs, enabling the generalization of implements algorithms and operators. - Hyper
Graph Iter - The
HyperGraphIter
trait combines theHyperGraphIterNode
andHyperGraphIterEdge
traits to provide a unified interface for iterating over both nodes - Hyper
Graph Iter Edge - The
HyperGraphIterEdge
trait extends theHyperGraph
trait to provide iterators over the edges in the hypergraph. - Hyper
Graph Iter Node - The
HyperGraphIterNode
trait extends theHyperGraph
trait to provide iterators over the nodes in the hypergraph. - Hyper
Index - The
HyperIndex
trait extends theNumIndex
to define contraints for the standard index type for the crate; implementors must also implement following traits: - Indexed
Indexed
describes a common interface for all types which are aware of some associated index. The trait is generic over a typeT
which implements theRawIndex
trait, allowing for flexibility in the type of index used while ensuring that the index type is compatible with the hypergraph’s indexing system.- Into
Edge Id - a trait for converting a type into a valid
EdgeId
- Into
Node Id - a trait for converting a type into a valid
VertexId
- Into
Weight - a trait for converting a type into a valid
Weight
- Iter
Domain - The
IterDomain
trait defines the base interface for creating an interator over a domain of vertices. - Merge
Merge
defines a common interface for merging two entities into another- NumIndex
- The
NumIndex
trait extends theRawIndex
trait to include additional operations and behaviours expected from numerical indices in a hypergraph. - RawDomain
RawDomain
is a trait that defines the behavior of a store that holds the vertices associated with a hyperedge or hyperfacet. It is used to abstract over different implementations of edge storage, such as arrays, vectors, or sets.- RawHyper
Graph RawHyperGraph
is a trait that defines the basic operations for a hypergraph data structure.- RawIndex
- a simple trait for denoting types compatible with to be used as indices in a hypergraph. note: the trait is sealed to prevent external implementations.
- RawLayout
RawLayout
establishes a common interface for hyperedge representations.- StdGraph
- The
StdGraph
is used to denotes instances in-which the hypergraph contains binary edges meaning that each edge is composed of exactly two vertices. - Step
Self StepSelf
is a trait establishing a common interface for entities that may be progressed, producing someOutput
as a result. The trait is typically used to define generators for indices within the hypergraph.- Step
With StepWith
is a trait defining an interface that can be best described as a more flexibletake
method, however, instead of leaving the default value in place of the previous one, it allows for a generator function to be provided.- Transform
- A trait denoting objects capable of being transformed by another object.
- Transform
Inplace - The
TransformInplace
generically describes objects capable of being transformed in-place by another object. - Weight
Mode WeightMode
is a trait used to denote marker types that define that state of a weight, meaning that the type is either weighted or unweighted. This trait is sealed to prevent further implementations.- Weighted
Weighted
is used to define common behaviours for types that have an associated weight.
Type Aliases§
- EdgeId
- a type alias for an [
Index
] whose kind isEdgeIndex
- Index
Array - a type alias for a fixed sized array of
IndexBase
- Index
Set - a type alias for a
HashSet
ofIndexBase
that is generic over the index typeI
, the kindK
, and the hash builderS
- Index
Slice - a type alias for a slice of
IndexBase
- Index
Slice Mut - a type alias for a mutable slice of
IndexBase
- Index
Slice Ref - a type alias for a reference to a slice of
IndexBase
- Result
- A type alias for a Result with the crate-specific error type
Error
- Udx
- a type alias for a
usize
used to define the default index type throughout the crate. - Vertex
Array - a type alias for a fixed sized array of
VertexId
- VertexB
Set - a type alias for a
VertexId
stored in aBTreeSet
- Vertex
Deque - a type alias for a
VertexId
stored in aVecDeque
- Vertex
Id - a type alias for an [
Index
] whose kind isVertexIndex
- Vertex
Set - a type alias for a
HashSet
ofVertexId
that is generic over the index typeI
- Vertex
Slice - a type alias for a slice of
VertexId
- Vertex
Slice Mut - a type alias for a mutable slice of
VertexId
- Vertex
Slice Ref - a type alias for a reference to a slice of
VertexId
- Vertex
Vec - a type alias for a
Vec
ofVertexId
that is generic over the index typeIx
- Weightless
- An
Weightless
types is a type alias for aWeight
that uses theUnWeight
marker type to indicate that it has no weight.