2 8 Массивы и кортежи

### Инициализация контейнера диапазоном

let mut arr = [1, 2, 3, 4, 5];
let mut arr2 = [1..=5];

Массив и динамический массив

Базовый синтаксис:

let a : array(int) = [1, 2, 3];

Массив фиксированного размера vs динамический:

let a : array::fixed(int) = [1, 2, 3];
let b : array::vec(int) = [1, 2, 3];

То же самое но с заданием размера:

let a : array::fixed(int, 3) = [1, 2, 3];
let b : array::vec(int, 3) = [1, 2, 3];

Капасити описывается иначе:

let a : array::fixed(int, size = 3, capacity = 5) = [1, 2, 3];
let b : array::vec(int, size = 3, capacity = 5) = [1, 2, 3];

В массивы можно класть новые элементы. В случае с fixed мы можем положить что-то только если capacity >= size мы можем убрать это поведение, отказываясь от возможности класть в fixed что-то если применим следующий тип:

let a : array::fixed::inline_size(int, size = 3) = [1, 2, 3];

Это встроит размер в тип, мы не сможем пользоваться встроенными функциями по добавлению элементов, но скорость работы и потребление памяти будет чуть меньше.

Разница в скобках

Квадратные скобки всегда необходимы для указания того, что мы создаём контейнер с элементами, а не n элементов с каким-то значением (в отличие от c++ где мы можем случайно это перепутать).