func (f *Allocator) Add() Worker {
	// Part I
	if f.i == len(f.bin) {
		f.i = 1
		r := f.bin[0]
		r.Add()
		f.water = r
		return r
	}
	// Part II
	r := f.bin[f.i]
	if r.Less(f.water) {
		r.Add()
		f.i++
		return r
	}
	// Part III
	f.i = 1
	r = f.bin[0]
	r.Add()
	f.water = r
	return r
}
// Add assigns a unit of work to a worker and returns that worker
Add assigns a unit of work to a worker and returns that worker
// Add assigns a unit of work to a worker and returns that worker
func (f *Allocator) Add() Worker {
	if f.i == len(f.bin) {
		f.i = 1
		r := f.bin[0]
		r.Add()
		f.water = r
		return r
	}
	I
	r := f.bin[f.i]
	if r.Less(f.water) {
		r.Add()
		f.i++
		return r
	}
	II
	f.i = 1
	r = f.bin[0]
	r.Add()
	f.water = r
	return r
}
func ( f * Allocator ) Add ( ) Worker { if f . i == len ( f . bin ) { f . i = 1 r := f . bin [ 0 ] r . Add ( ) f . water = r return r } r := f . bin [ f . i ] if r . Less ( f . water ) { r . Add ( ) f . i ++ return r } f . i = 1 r = f . bin [ 0 ] r . Add ( ) f . water = r return r }
Add assigns a unit of work to a worker and returns that worker
Add assigns a unit of work to a worker and returns that worker
// Part I // Part II // Part III