如何用单个值初始化一个大数组?
我正在尝试在 Rust 中实现 Atkin 的筛子。这需要用 初始化一个数组false。互联网上的语法不再有效。
fn main() {
const limit:usize = 1000000000;
let mut sieve:[bool; limit] = [false];
}
我希望这会创建一个limit填充大小的数组false,而不是
rustc“期望一个固定大小为 1000000000 个元素的数组,找到一个有 1 个元素的数组”。
回答
[false]是一个只有一个元素的数组,即它的类型是[bool; 1]。
你想要的是[false; limit]而不是[false]:
fn main() {
const limit: usize = 1_000_000_000;
let mut sieve = [false; limit];
}
这里不需要类型注释[bool; limit],因为它可以被推断出来。