Structs
Enums
Traits
Be able to derive a set of identifiers from a given item. Semantically this is Get “children” but not all graph operations are parent-child.
A type is able to extract an Identifer from itself. The identifier type is provided as an argument to the trait
Marker trait that some type corresponds to the identity of some value. Used for graph traversal book-keeping (seen set, querying, etc)
Label for a node. The label type must be very cheap to clone and move around.
for strings, Arc
Be able to query some type given an identifier. It must return a type that can be queried for more values like itself.