Итак, я немного поэкспериментировал с этим и посмотрел на документы, и похоже, что тип CArray не обрабатывает формирование так же, как Perl6 Arrays.
Ближайшая вещь, которую выполучил конструктор allocate, который предварительно выделяет пространство в массиве, но не устанавливает размер, чтобы вы могли добавлять больше вещей.
Ваше определение класса в порядке, но вы хотите выделить массив в подметоде BUILD
.
https://docs.perl6.org/language/nativecall#Arrays
(дальнейшие размышления)
Вы можете иметь два объекта.Один внутренний и один для структуры.
Структура имеет массив CArray[int32]
.Внутренний объект данных имеет фасонный массив типов int32 my int3 @a[2]
.Тогда вам просто нужно скопировать между ними.
Методы получения и установки живут на главном объекте, и вы используете объект struct только тогда, когда хотите поговорить с библиотекой lib?