已经有一个问题,但与Rust 0.13有关,语法似乎已经改变.从当前文档中我了解到在堆上创建数组将是这样的:
fn main() {
const SIZE: usize = 1024 * 1024;
Box::new([10.0; SIZE]);
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行这个程序时,我收到以下错误:
thread '<main>' has overflowed its stack
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
一旦我分配了阵列,我该如何手动释放它?指针算法在不安全模式下是否可行?
就像在C++中一样:
double *A=new double[1000];
double *p=A;
int i;
for(i=0; i<1000; i++)
{
*p=(double)i;
p++;
}
delete[] A;
Run Code Online (Sandbox Code Playgroud)
Rust中有任何等效的代码吗?
我正在通过编写简单的二进制解码器来学习 Rust。
我正在使用BufferedReader带有byteorder crate 的 a来读取数字,但是我在读取字节缓冲区时遇到了问题。
我想将字节数据读入在运行时分配的缓冲区中。然后我想将此缓冲区的所有权传递给一个结构。当 struct 不再使用时,应释放缓冲区。
除了一些Vec::with_capacity()hacks之外,似乎没有办法在堆上分配运行时确定的大小的数组。任何想法如何使用适当的 Rust 语义来实现它?