Some days ago I was writing a TAP file generator for ZX Spectrum. To write bytes incrementally into output I'd use streams on Delphi or C++, but D deprecated streams.
So I chose rawWrite. As for bytes storage, it was Array!uint (correction: it was Array!ubyte) from std.containers. But rawWrite can write only traditional arrays and not containers. And seems like there's no simple way to convert an Array to an array. (using .array worked on Array!uint, but not on Array!ubyte)
In the end I used a simple dynamic array, but it left a feeling of user-unfriendliness.