【发布时间】:2015-08-15 06:10:44
【问题描述】:
我有一个Read;目前是File。我想从中读取一些仅在运行时才知道的字节(二进制数据结构中的长度前缀)。
所以我尝试了这个:
let mut vec = Vec::with_capacity(length);
let count = file.read(vec.as_mut_slice()).unwrap();
但count 为零,因为vec.as_mut_slice().len() 也为零。
[0u8;length] 当然不起作用,因为大小必须在编译时知道。
我想做
let mut vec = Vec::with_capacity(length);
let count = file.take(length).read_to_end(vec).unwrap();
但是take 的接收器参数是T,而我只有&mut T(而且我不确定为什么需要它)。
我想我可以用BufReader 替换File 并用fill_buf 和consume 跳舞,这听起来很复杂,但我仍然想知道:我是否忽略了什么?
【问题讨论】: