What about having a protocol for having failable literal convertible 
initializers for literal optionals?
struct AtLeast3<T> : FailableArrayLiteralConvertible {
    ...
    init?(arrayLiteral elements: T...) {
        guard elements.count >= 3 else { return nil }
        ...
    }
}
var bar: AtLeast3? = [1, 2]? // bar is 'Optional<AtLeast3>.None'
bar = [1,2,3] // bar is 'Optional<AtLeast3>.Some([1,2,3])'

Seems handy for when your types are literal convertible in principle, but you 
need to do some validation.

Thoughts?

- Dave Sweeris
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to