I notice that this pattern shows up quite frequently in the Swift world but I don't know what its name is.
- define a new type that conforms to a protocol
- solely use the new type as a unique value to create a new "thing"
extension VerticalAlignment {
struct CustomAlignment: AlignmentID {...}
static let customAlignment = VerticalAlignment(CustomAlignment.self)
}