// Code generated by "stringer -type=NumberKind"; DO NOT EDIT.

package metric

import "strconv"

func _() {
	// An "invalid array index" compiler error signifies that the constant values have changed.
	// Re-run the stringer command to generate them again.
	var x [1]struct{}
	_ = x[Int64NumberKind-0]
	_ = x[Float64NumberKind-1]
}

const _NumberKind_name = "Int64NumberKindFloat64NumberKind"

var _NumberKind_index = [...]uint8{0, 15, 32}

func (i NumberKind) String() string {
	if i < 0 || i >= NumberKind(len(_NumberKind_index)-1) {
		return "NumberKind(" + strconv.FormatInt(int64(i), 10) + ")"
	}
	return _NumberKind_name[_NumberKind_index[i]:_NumberKind_index[i+1]]
}
