func MustNewTag(k, v string) Tag {
	t, err := NewTag(k, v)
	if err != nil {
		panic(err)
	}
	return t
}
MustNewTag returns the result of calling NewTag, but panics if NewTag returns an error. Should only be used in
instances where the inputs are statically defined and known to be valid.
package metrics
import (
	"strings"
	"unicode"
	"unicode/utf8"
	"github.com/pkg/errors"
)
type Tag struct {
	key   string
	value string
	keyValue string
}
func (t Tag) Key() string {
	return t.key
}
func (t Tag) Value() string {
	return t.value
}
func (t Tag) String() string {
	return t.keyValue
}
type Tags []Tag
func (t Tags) ToSet() map[Tag]struct{} {
	tags := make(map[Tag]struct{})
	for _, currTag := range t {
		tags[currTag] = struct{}{}
	}
	return tags
}
func (t Tags) ToMap() map[string]string {
	tags := make(map[string]string)
	for _, currTag := range t {
		tags[currTag.key] = currTag.value
	}
	return tags
}
func (t Tags) Len() int {
	return len(t)
}
func (t Tags) Less(i, j int) bool {
	return t[i].keyValue < t[j].keyValue
}
func (t Tags) Swap(i, j int) {
	t[i], t[j] = t[j], t[i]
}