使用变量的长度创建空数组

时间:2017-06-30 13:22:41

标签: rust

我想从TcpStream读取一个自定义字节数,但我无法初始化一个新的空数组缓冲区,我可以用变量定义长度。无法使用向量,因为TcpStream读取函数需要数组。

let mut buffer = [0; 1024]; // The 1024 should be a variable

当我用变量替换1024时:

let length = 2000;
let mut buffer = [0; length];

我收到消息:

error[E0435]: attempt to use a non-constant value in a constant
--> src/network/mod.rs:26:30
|
26 |         let mut buffer = [0; bytes];
|                              ^^^^^ non-constant used with constant

为什么我不这样做?

1 个答案:

答案 0 :(得分:4)

Vec使用with_capacity()

use std::net::TcpStream;

fn main() {
    use std::io::Read;

    let mut stream = TcpStream::connect("127.0.0.1:34254").unwrap();
    let mut v = Vec::with_capacity(128);

    let _ = stream.read(&mut v);
}

你混淆了数组和切片。 Rust中有不同之处:切片是内存中的一个视图,以前使用数组,Vec或其他设置。