/** @internal */ export class SingleShotGen implements Generator { called = false constructor(readonly self: T) { } next(a: A): IteratorResult { return this.called ? ({ value: a, done: true }) : (this.called = true, ({ value: this.self, done: false })) } return(a: A): IteratorResult { return ({ value: a, done: true }) } throw(e: unknown): IteratorResult { throw e } [Symbol.iterator](): Generator { return new SingleShotGen(this.self) } }