В соответствии с Rust Reference:
Тип
isize
представляет собой целочисленный тип со знаком с таким же количеством бит, что и тип указателя платформы. Теоретическая верхняя граница размера объекта и массива - это максимальное значениеisize
. Это гарантирует, чтоisize
может использоваться для вычисления различий между указателями в объекте или массиве и может адресовать каждый байт внутри объекта вместе с одним байтом за конец.
Это явно ограничивает массив не более чем 2G-элементами в 32-битной системе, однако неясно, является ли массив также ограниченным объемом не более 2 ГБ памяти.
В C или С++ вы могли бы направить указатели на первый и один прошлый последний элемент на char*
и получить разницу указателей от этих двух; эффективно ограничивая массив до 2 ГБ (чтобы он не переполнял intptr_t
).
Является ли массив из 32 бит также ограниченным 2 ГБ в Rust? Или нет?