FEAT: New optional feature serde-1, serialization for Graph, StableGraph
- Implement serde serialization for Graph, StableGraph
- Both graphs use the same representation; we can always convert Graph
-> StableGraph but only the other way if it has no holes.
- The graphs use a manual serialization method so that we encode
graphs portably and without redundant information. Supports both
bincode style and json style (self describing) serialization.
- We use serde deriving as far as possible, but via intermediate data
structures that we create during de/serialization. This is done to
reach all the goals of portable serialization and additionally,
avoiding excess copying or reallocation. Serialization is zero
allocation.
- Other graphs can learn serialization down the line. Gettin Graph
& StableGraph finished was the major milestone needed.
- Depend on itertools 0.6.2 for some utilities we were copying anyway
14 files changed