func RecordWithTags(ctx context.Context, mutators []tag.Mutator, ms ...Measurement) error {
	return RecordWithOptions(ctx, WithTags(mutators...), WithMeasurements(ms...))
}
RecordWithTags records one or multiple measurements at once.

Measurements will be tagged with the tags in the context mutated by the mutators.
RecordWithTags is useful if you want to record with tag mutations but don't want
to propagate the mutations in the context.
package stats
import (
	"context"
	"go.opencensus.io/metric/metricdata"
	"go.opencensus.io/stats/internal"
	"go.opencensus.io/tag"
)
func init() {
	internal.SubscriptionReporter = func(measure string) {
		mu.Lock()
		measures[measure].subscribe()
		mu.Unlock()
	}
}
type Recorder interface {
	Record(*tag.Map, interface{}, map[string]interface{})
}
type recordOptions struct {
	attachments  metricdata.Attachments
	mutators     []tag.Mutator
	measurements []Measurement
	recorder     Recorder
}
func WithAttachments(attachments metricdata.Attachments) Options {
	return func(ro *recordOptions) {
		ro.attachments = attachments
	}
}
func WithTags(mutators ...tag.Mutator) Options {
	return func(ro *recordOptions) {
		ro.mutators = mutators
	}
}
func WithMeasurements(measurements ...Measurement) Options {
	return func(ro *recordOptions) {
		ro.measurements = measurements
	}
}
func WithRecorder(meter Recorder) Options {
	return func(ro *recordOptions) {
		ro.recorder = meter
	}
}
type Options func(*recordOptions)
func createRecordOption(ros ...Options) *recordOptions {
	o := &recordOptions{}
	for _, ro := range ros {
		ro(o)
	}
	return o
}
func Record(ctx context.Context, ms ...Measurement) {
	RecordWithOptions(ctx, WithMeasurements(ms...))
}