NewPool creates a new sync.Pool implementation with a generic New function defining the type temporary object that will be used.
Swimmer takes a pointer to a desired pool object to be initialized and returns the function that is used to Put it back in the pool.