【发布时间】:2015-05-06 08:54:06
【问题描述】:
我编写了以下方法来使用GzDecoder from the Flate2 library从压缩文件中解析二进制数据
fn read_primitive<T: Copy>(reader: &mut GzDecoder<File>) -> std::io::Result<T>
{
let sz = mem::size_of::<T>();
let mut vec = Vec::<u8>::with_capacity(sz);
let ret: T;
unsafe{
vec.set_len(sz);
let mut s = &mut vec[..];
try!(reader.read(&mut s));
let ptr :*const u8 = s.as_ptr();
ret = *(ptr as *const T)
}
Ok(ret)
}
它可以工作,但我对代码不是特别满意,尤其是在使用虚拟向量和临时变量ptr 时。这一切对我来说都非常不雅,我相信有更好的方法来做到这一点。我很高兴听到有关如何清理此代码的任何建议。
【问题讨论】:
标签: rust