我在初始化固定长度数组时遇到问题。My attempts so far all result in the same "use of possibly uninitialized variable: foo_array
" error:
第一个
我实现了Default
特征,但是Rust在默认情况下似乎并不像C++构造函数那样调用它。
什么是初始化一个定长数组的正确方法?我想做一个有效的就地初始化,而不是某种复制。
相关:Why is the Copy trait needed for default (struct valued) array initialization?
相关:Is there a way to not have to initialize arrays twice?
3条答案
按热度按时间q0qdq0h21#
保险箱可是somewhat inefficient solution:
由于您特别要求a solution without copies:
MaybeUninit
的文档建议这样做。l7wslrjt2#
您可以使用
arrayvec
crate:载货汽车
源代码/main.rs
bkkx9g8r3#
最简单的方法是在您的型别上衍生
Copy
,并以此初始化数组,复制元素N
多次:如果你想避免复制,有几个选择。你可以使用
Default
特征:但是,这仅限于最多32个元素的数组。使用const泛型,标准库现在可以为 all 数组提供
Default
。但是,由于正在处理的微妙原因,这将是向后不兼容的更改。现在,您可以利用
const
值也可以在数组重复表达式中使用这一事实:如果您是每晚开机,则可以使用
array::map
: