lazyInitRange

Defer range construction until first empty/front call.

lazyInitRange
(
R
)
(
R delegate
()
constructor
)

Examples

t
{
	import std.algorithm.iteration;
	import std.range;

	int[] todo, done;
	chain(
		only({ todo = [1, 2, 3]; }),
		// eager will fail: todo.map!(n => (){ done ~= n; }),
		lazyInitRange(() => todo.map!(n => (){ done ~= n; })),
	).each!(dg => dg());
	assert(done == [1, 2, 3]

Meta