func (m *metricVec) Collect(ch chan<- Metric) {
	m.mtx.RLock()
	defer m.mtx.RUnlock()
	for _, metrics := range m.children {
		for _, metric := range metrics {
			ch <- metric.metric
		}
	}
}
Collect implements Collector.
package prometheus
import (
	"fmt"
	"sync"
	"github.com/prometheus/common/model"
)
type metricVec struct {
	mtx      sync.RWMutex  
	children map[uint64][]metricWithLabelValues
	desc     *Desc
	newMetric   func(labelValues ...string) Metric
	hashAdd     func(h uint64, s string) uint64  
	hashAddByte func(h uint64, b byte) uint64
}
func newMetricVec(desc *Desc, newMetric func(lvs ...string) Metric) *metricVec {
	return &metricVec{
		children:    map[uint64][]metricWithLabelValues{},
		desc:        desc,
		newMetric:   newMetric,
		hashAdd:     hashAdd,
		hashAddByte: hashAddByte,
	}
}
type metricWithLabelValues struct {
	values []string
	metric Metric
}
func (m *metricVec) Describe(ch chan<- *Desc) {
	ch <- m.desc
}