Как вернуть ограниченную страницу из storage Vec в Cairo
Вектор в хранилище контракта имеет собственную длину и методы доступа к элементам. Публичный запрос со стартовым индексом и размером страницы должен проверить границу до чтения.
Ограничьте чтение измеренной длиной
Прочтите длину один раз. Если начало за концом или равно длине, верните пустую страницу либо предусмотренную ошибку. Иначе ограничьте количество оставшимися элементами до вычисления конечного индекса.
length = 3
valid indices: 0, 1, 2
requested index: 3
При длине три, старте два и запросе десяти элементов верните только элемент два. Индекс три находится за границей. Для API, где отсутствие нужно вернуть как значение, используйте вариант доступа с необязательным результатом.
Сохраните согласованность нескольких запросов
Добавление или удаление элементов между страницами меняет длину и видимый хвост. Внешнему клиенту для исторического списка следует читать один сохранённый блок. Ограничьте и максимальный размер страницы, чтобы входные данные не вызывали чрезмерное чтение. starknet.io The Cairo Programming Language