std.containers.array.Array
владеет и полностью инкапсулирует свои данные и не обеспечивает прямой доступ к ним. Это связано с тем, что он управляет временем жизни данных, поэтому любая операция на Array
сделает недействительными любые указатели на его внутренние данные. Следовательно, единственный способ получить элементы Array
в качестве непрерывного вектора - это скопировать их, один за другим, например, в. стандартный массив D Функция std.array.array
, которая копирует произвольный диапазон в массив D, помогает в этой задаче:
import std.array;
import std.container.array;
Array!uint ci = [1, 2, 3];
uint[] ai = ci.array;
assert(ai == [1, 2, 3]);
Array!ubyte cb = [ubyte(1), ubyte(2), ubyte(3)];
ubyte[] ab = cb.array;
assert(ab == [ubyte(1), ubyte(2), ubyte(3)]);
На данный момент кажется не слишком выгодным записывать элементы Array
непосредственно в файл или полностью исключать использование Array
.