【发布时间】:2023-11-08 17:17:02
【问题描述】:
我想做一个大的方形数组,但维度限制是 1023。因此,我想按照建议的in a comment 制作一维数组的Vec。我尝试了这个作为开始:
fn main() {
const VMAX: usize = 1000;
const ALEN: usize = 32;
let mut arr2: Vec<[f64; ALEN]> = vec![[0.0; ALEN]; VMAX];}
对于VMAX 的任何值都可以,但大于 32 的ALEN 给出:
error[E0277]: the trait bound `[f64; 33]: std::clone::Clone` is not satisfied
--> <std macros>:2:1
|
2 | $ crate :: vec :: from_elem ( $ elem , $ n ) ) ; ( $ ( $ x : expr ) , * ) => (
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
tes3.rs:4:35: 4:58 note: in this expansion of vec! (defined in <std macros>)
|
= help: the following implementations were found:
= help: <[T; 0] as std::clone::Clone>
= help: <[T; 1] as std::clone::Clone>
= help: <[T; 2] as std::clone::Clone>
= help: <[T; 3] as std::clone::Clone>
= help: and 29 others
= note: required by `std::vec::from_elem`
出了点问题,我在查找信息和解释错误消息时遇到问题。如何制作我的巨型方阵?不同的方法也可以,性能很重要。当然,我会对数组做一些事情,例如循环索引并将一些值放入其中。
【问题讨论】:
-
尺寸限制为 1023 — 不,不是。这就像说“内存限制”是 4GB,因为这就是您的计算机所拥有的全部。是的,堆栈空间是有限的,但通常可以在一定范围内更改。此外,如果数组中的项目占用 1MB,您不太可能将其中的 1023 个放在一个数组中,如果项目占用一个字节,您可能会放置超过 1023 个。
-
与*.com/q/25151890/155423 或*.com/q/13102786/155423 或*.com/q/28145732/155423 或*.com/q/39240360/155423 重复。 请尊重回答者的时间,在提问之前先进行搜索。您遇到的具体错误可能由*.com/q/30415354/155423 解释。
-
另外还有a few crates处理数值和科学计算。这些板条箱的作者已经对这些决定进行了大量思考。我知道的一个是ndarray。
-
我描述了我的问题并给出了我的代码。在此之前,我努力搜索,但不是“克隆”或“板条箱”来创建矩阵。我没有通过不使用他们的库来表现出对任何人的不尊重,我两天前第一次尝试使用我不知道的语言。回想起来,1023的限制被无知地说成是事实,但我只是体验了一下,得到了其他用户的确认。所以,我不是特别抱歉,但感谢您的澄清和提示!
-
抱歉,我无意暗示您对 crate 作者不尊重。但是,A Google search for "rust 2d" 提供了我刚刚链接的大部分问题。这是我在提出问题之前希望有人做的主要事情。我所说的所有其他内容只是为您提供更多信息。