...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

TerminatorAdapter書き直し

import std.stdio;
import std.algorithm;
import std.range;

struct TerminatorAdapter(Range, Element) if (isOutputRange!(Range, Element))
{
	Range r;
	Element terminator;
	this(Range r, Element terminator)
	{
		this.r = r;
		this.terminator = terminator;
	}
	void put(T)(T t) // ここどうしよう
	{
		r.put(t);
		r.put(terminator);
	}
}

TerminatorAdapter!(Range, Element) terminatorAdapter(Range, Element)(Range r, Element terminator)
{
	return TerminatorAdapter!(Range, Element)(r, terminator);
}

void main()
{
	copy(stdin.byLine(), terminatorAdapter(stdout.lockingTextWriter(), "[end of line]\n"));
}

こうかなー?