我通过编写简单的二进制解码器来学习Rust .
我正在使用带有byteorder crate的 BufferedReader
来读取数字,但是我在读取字节缓冲区方面遇到了问题 .
我想将字节数据读入运行时分配的缓冲区 . 然后我想将此缓冲区的所有权传递给结构 . 当struct不再使用时,应该释放缓冲区 .
似乎没有办法在堆上分配具有在运行时确定的大小的数组,除了一些 Vec::with_capacity()
hacks . 任何想法如何使用适当的Rust语义实现它?
我通过编写简单的二进制解码器来学习Rust .
我正在使用带有byteorder crate的 BufferedReader
来读取数字,但是我在读取字节缓冲区方面遇到了问题 .
我想将字节数据读入运行时分配的缓冲区 . 然后我想将此缓冲区的所有权传递给结构 . 当struct不再使用时,应该释放缓冲区 .
似乎没有办法在堆上分配具有在运行时确定的大小的数组,除了一些 Vec::with_capacity()
hacks . 任何想法如何使用适当的Rust语义实现它?
2 回答
Rust是一种低级语言;因此,您可以分配原始内存,然后自己填充对象 . 当然,它需要
unsafe
代码,因为所有摆弄原始内存的都是 .这是a complete example:
当然,在实际代码中,我会使用
Vec
为我安全地管理内存 . 它更简单!这包含在The Rust Programming Language中,特别是“The Stack and the Heap)”部分 .
使用Box::new: