A simple Encoder and Decoder that serializes Codable Swift types to a flat, untagged binary representation. Note that this usually requires the structures to have a fixed size.
struct Point: Codable {
let x: UInt16
let y: UInt16
}
let encoder = BinaryEncoder()
try encoder.encode(Point(x: 2, y: 3))
// -> Data([0, 2, 0, 3])
let decoder = BinaryDecoder()
try decoder.decode(Point.self, from: Data([0, 2, 0, 3]))
// -> Point(x: 2, y: 3)