enum union Option { None, Some T, fn empty(self Option) bool { return self.#tag == :None; } fn some_or(self Option, it T) T { switch self { case None; return it; case Some x; return x; } } }