A circular buffer which avoids moving data around, but instead maps the same physical memory block twice into two adjacent virtual memory blocks. It $(U does) move data blocks when growing the buffer.
A destructor is present on this object, but not explicitly documented in the source.
Allocates space for at least n new objects of type T to be written to the buffer.
Adds first n objects of type T stored in the slice previously obtained using alloc. Does not touch the remaining part of that slice.
Removes first n objects of type T from the buffer.
Returns a read-only slice, typed as const(T), containing all data currently available in the buffer.