Poly
public protocol Poly
                Poly is a protocol to which types that are polymorphic belong to.
Specifically, Poly1, Poly2, Poly3, etc.
types conform to the Poly protocol.
These types allow typesafe grouping
of a number of disparate types under
one roof.
Access
You can access the value of a Poly type
in one of four different ways.
You can switch over its cases
switch poly2Value { case .a(let value): // value is of type `A` case .b(let value): // value is of type `B` }You can ask for a value by accessor
let value1 = poly2Value.a // value1 is of type `A?` let value2 = poly2Value.b // value2 is of type `B?`You can ask for a value by type
let value1 = poly2Value[A.self] // value1 is of type `A?` let value2 = poly2Value[B.self] // value2 is of type `B?`You can ask for a type-erased value
let value = poly2Value.value // value is of type `Any`
View on GitHub
        Poly Protocol Reference