gpt4 book ai didi

rust - 不能对数组的大小使用惰性静态整数常量

转载 作者:行者123 更新时间:2023-11-29 08:27:20 26 4
gpt4 key购买 nike

以下代码从 sysconf 获取页面大小以优化从文件系统读取文件。我无法创建大小为的缓冲区:

lazy_static! {
static ref PAGE_SIZE: i64 = sysconf(SysconfVariable::ScPagesize).unwrap();
}

fn main() {
let mut buffer = [0; *PAGE_SIZE as usize];
}

给我:

error[E0080]: constant evaluation error
--> src/main.rs:6:30
|
6 | let mut buffer = [0; *PAGE_SIZE as usize];
| ^^^^^^^^^^ unimplemented constant expression: deref operation

我认为这是一个运算符优先级问题,并尝试用大括号括起来,但结果还是一样:

error[E0080]: constant evaluation error
--> src/main.rs:6:30
|
6 | let mut buffer = [0; (*(PAGE_SIZE)) as usize];
| ^^^^^^^^^^^^^^ unimplemented constant expression: deref operation

如何使用上面的常量来分配缓冲区?

最佳答案

这根本不是编译时常量。对于无法在编译时确定的任何内容,请使用 vec!:

let mut buffer = vec![0; *PAGE_SIZE as usize];

目前没有对可变长度数组 (VLA) 的编译器级别支持。

关于rust - 不能对数组的大小使用惰性静态整数常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43435312/

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