swift-structural
This repo includes example protocol implementations for automatic derived
conformances based on the Structural
protocol. It is meant to accompany the
Swift evolution proposal, and should not be depended on as a library.
The codebase is structured in the following modules:
- StructuralCore
- StructuralExamples
- StructuralBenchmarks
StructuralCore
This module contains definition of the Structural
protocol, and additional
data types necessary to model the structural representations.
StructuralExamples
We implement a number of protocols, using the Structural
.
Including protocols inspired by the Swift standard library:
CustomEquatable
CustomComparable
CustomHashable
CustomDebugString
EncodeJSON
DecodeJSON
And also protocols based on the Swift for TensorFlow libraries:
Additive
Zero
InplaceAdd
ScaleBy
DefaultInitializable
Lastly, we also provide examples of hand-written conformances to Structural
for the following datatypes:
- enums: ASCII, Color, BinaryTree
- structs: PointN (for N in 1..16)
In the future, those conformances are going to be generated by the compiler.
StructuralBenchmarks
This module includes benchmarks done using (swift-benchmark)[https://github.com/google/swift-benchmark) framework.
You can run benchmarks using the following command:
$ swift run -c release StructuralBenchmarks
An example output of the benchmark run can be found in [benchmark.results] file.