enum Optional2<T> : ExpressibleByNilLiteral {
    case None
    case Some(T)
    init(){
        self = .None
    }
    init(_ some: T){
        self = .Some(some)
    }
    init(nilLiteral: ()){
        self = .None
    }
}

  
let v1 : Optional2 = 10        // ERROR
let v2 : Optional2 = Optional2(10)    // OK
let v3 : Optional2 = Optional2.Some(10) // OK
let vnl : Optional2 = nil         // OK

上記のERRORは、本当のオプショナル型の場合、代入できますが、
上記の列挙型では、コンパイルエラーとなります。
代入演算子を作成しようと思ったのですが、実装に失敗します。
static func = (lhs: Optional2 , rhs: T)->Void{}