class ReeEnum::StringValueEnumMapper

def cast(value, name:, role: nil)

def cast(value, name:, role: nil)
  enum_value = case value
  when String
    @enum.get_values.by_value(value)
  when ReeEnum::Value
    @enum.get_values.each.find { _1 == value }
  end
  if enum_value.nil?
    raise ReeMapper::CoercionError, "`#{name}` should be one of #{enum_inspection}, got `#{truncate(value.inspect)}`"
  end
  enum_value
end

def serialize(value, name:, role: nil)

def serialize(value, name:, role: nil)
  value.value
end