code: func Parse(s string) (CPUSet, error) {
  	b := NewBuilder()
  
  	// Handle empty string.
  	if s == "" {
  		return b.Result(), nil
  	}
  
  	// Split CPU list string:
  	// "0-5,34,46-48 => ["0-5", "34", "46-48"]
  	ranges := strings.Split(s, ",")
  
  	for _, r := range ranges {
  		boundaries := strings.Split(r, "-")
  		if len(boundaries) == 1 {
  			// Handle ranges that consist of only one element like "34".
  			elem, err := strconv.Atoi(boundaries[0])
  			if err != nil {
  				return NewCPUSet(), err
  			}
  			b.Add(elem)
  		} else if len(boundaries) == 2 {
  			// Handle multi-element ranges like "0-5".
  			start, err := strconv.Atoi(boundaries[0])
  			if err != nil {
  				return NewCPUSet(), err
  			}
  			end, err := strconv.Atoi(boundaries[1])
  			if err != nil {
  				return NewCPUSet(), err
  			}
  			// Add all elements to the result.
  			// e.g. "0-5", "46-48" => [0, 1, 2, 3, 4, 5, 46, 47, 48].
  			for e := start; e <= end; e++ {
  				b.Add(e)
  			}
  		}
  	}
  	return b.Result(), nil
  }
docs: // Parse CPUSet constructs a new CPU set from a Linux CPU list formatted string.
  //
  // See: http://man7.org/linux/man-pages/man7/cpuset.7.html#FORMATS