referential transparency with move semantics for input generators