code: func resultMetric(lhs, rhs labels.Labels, op ItemType, matching *VectorMatching, enh *EvalNodeHelper) labels.Labels {
  	if enh.resultMetric == nil {
  		enh.resultMetric = make(map[uint64]labels.Labels, len(enh.out))
  	}
  	// op and matching are always the same for a given node, so
  	// there's no need to include them in the hash key.
  	// If the lhs and rhs are the same then the xor would be 0,
  	// so add in one side to protect against that.
  	lh := lhs.Hash()
  	h := (lh ^ rhs.Hash()) + lh
  	if ret, ok := enh.resultMetric[h]; ok {
  		return ret
  	}
  
  	lb := labels.NewBuilder(lhs)
  
  	if shouldDropMetricName(op) {
  		lb.Del(labels.MetricName)
  	}
  
  	if matching.Card == CardOneToOne {
  		if matching.On {
  		Outer:
  			for _, l := range lhs {
  				for _, n := range matching.MatchingLabels {
  					if l.Name == n {
  						continue Outer
  					}
  				}
  				lb.Del(l.Name)
  			}
  		} else {
  			lb.Del(matching.MatchingLabels...)
  		}
  	}
  	for _, ln := range matching.Include {
  		// Included labels from the `group_x` modifier are taken from the "one"-side.
  		if v := rhs.Get(ln); v != "" {
  			lb.Set(ln, v)
  		} else {
  			lb.Del(ln)
  		}
  	}
  
  	ret := lb.Labels()
  	enh.resultMetric[h] = ret
  	return ret
  }
docs: // resultMetric returns the metric for the given sample(s) based on the Vector
  // binary operation and the matching options.