我想从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
为什么我不这样做?
答案 0 :(得分:4)
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或其他设置。