code: func ToQueryResult(ss storage.SeriesSet, sampleLimit int) (*prompb.QueryResult, error) {
  	numSamples := 0
  	resp := &prompb.QueryResult{}
  	for ss.Next() {
  		series := ss.At()
  		iter := series.Iterator()
  		samples := []prompb.Sample{}
  
  		for iter.Next() {
  			numSamples++
  			if sampleLimit > 0 && numSamples > sampleLimit {
  				return nil, HTTPError{
  					msg:    fmt.Sprintf("exceeded sample limit (%d)", sampleLimit),
  					status: http.StatusBadRequest,
  				}
  			}
  			ts, val := iter.At()
  			samples = append(samples, prompb.Sample{
  				Timestamp: ts,
  				Value:     val,
  			})
  		}
  		if err := iter.Err(); err != nil {
  			return nil, err
  		}
  
  		resp.Timeseries = append(resp.Timeseries, &prompb.TimeSeries{
  			Labels:  labelsToLabelsProto(series.Labels()),
  			Samples: samples,
  		})
  	}
  	if err := ss.Err(); err != nil {
  		return nil, err
  	}
  	return resp, nil
  }
docs: // ToQueryResult builds a QueryResult proto.