Я полагаю, что ваш компьютер имеет 64-битную архитектуру. Это означает, что он может адресовать не более 2 ^ 64 байт (на практике это меньше).
Теперь, поскольку размер u64
составляет 8 байт, вы пытаетесь зарезервировать 8 * 2^64
байт. , Ваш компьютер не может даже адресовать такое количество байтов!
Кроме того, вы пытаетесь выделить несколько миллионов терабайт в оперативной памяти. Это не разумный объем памяти.
Строка, которая паникует в std lib, выглядит следующим образом:
let alloc_size = capacity.checked_mul(elem_size).unwrap_or_else(|| capacity_overflow());
Он проверяет, что емкость (количество элементов) умножается на размер вашего элемента (8 байтов, как я уже сказал) не переполняется. Это программный c способ представить мои прежние рассуждения.