gpt4 book ai didi

rust - 如何用u64::max_value()填充Vec

转载 作者:行者123 更新时间:2023-12-03 11:40:26 31 4
gpt4 key购买 nike

有没有办法将vec填充到具有u64::max_value极限值的范围内?

fn main() {
let vals: Vec<u64> = (2..u64::max_value()).collect();
println!("{:?}", vals.len());
}

编译器抛出: thread 'main' panicked at 'capacity overflow', src/liballoc/raw_vec.rs:777:5

最佳答案

我想您的计算机具有64位体系结构。这意味着它最多可以寻址2 ^ 64个字节(实际上,这要少得多)。

现在,由于u64的大小为8个字节,因此您尝试保留8 * 2^64字节。您的计算机甚至无法处理这么多字节!

另外,您正在尝试在RAM中分配几百万兆字节。这不是一个合理的内存量。

在std lib中出现 panic 的行如下:

let alloc_size = capacity.checked_mul(elem_size).unwrap_or_else(|| capacity_overflow());

它验证容量(项目数)乘以元素的大小(如我所说的8个字节)不会溢出。那是代表我以前推理的程序化方式。

关于rust - 如何用u64::max_value()填充Vec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59881352/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com