struct Sink
{
   char[] buff;
   void delegate(in char[]) sink;

   void write(in char[] s)
   {
      auto len=min(s.length,buff.length);
      buff[0..len]=s[0..len];
      buff=buff[len..$];
      const s1=s[len..$];
      if(s1.length)sink(s1);
   }
}

override void toString(ref Sink sink) const
{
   value.toString(sink);
   sink.write("[");
   len.toString(sink);
   sink.write("]");
}

Reply via email to