class T::Types::Enum

validates that the provided value is within a given set/enum

def describe_obj(obj)

@override Base
def describe_obj(obj)
  obj.inspect
end

def initialize(values)

def initialize(values)
  @values = values
end

def name

@override Base
def name
  "T.enum([#{@values.map(&:inspect).join(', ')}])"
end

def subtype_of_single?(other)

@override Base
def subtype_of_single?(other)
ther
num
er.values - @values).empty?
e

def valid?(obj)

@override Base
def valid?(obj)
  @values.member?(obj)
end