gpt4 book ai didi

arrays - 如何使用另一个数组的长度来初始化 Rust 中的数组?

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

我想初始化一个长度等于另一个数组长度的数组:

fn foo(array: &[i32]) {
let mut sum = [0; array.len()];
}

会报错:

error[E0080]: constant evaluation error
--> test.rs:22:18
|
22 | let mut sum = [0; array.len()];
| ^^^^^^^^^^^ unsupported constant expr

我想我必须使用这个 len() 参数...我该如何解决这个问题?

最佳答案

回答问题:

How to use another array's length to initialize an array in Rust?

从 Rust 1.51 开始,您可以编写如下通用代码:

fn foo<const N: usize>(array: [u8; N]) -> [u8; N] {
unimplemented!()
}

参见 Is it possible to control the size of an array using the type parameter of a generic?了解更多详情。

Rust 以前版本的解决方案涉及特征和宏的组合。这有一个明显的缺点,即仅限于一组类型。这将在 Why does println! work only for arrays with a length less than 33? 等问题中进一步讨论。


展示基于 Vec 的代码的更短、更惯用的版本:

fn foo(slice: &[i32]) {
let mut sum = vec![0; slice.len()];
}

关于arrays - 如何使用另一个数组的长度来初始化 Rust 中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43050876/

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