集合如何转换为普通数组?
= note: expected type &[u8]
found type &std::iter::Take<std::slice::Iter<'_, u8>>
//读取的数据文件10M,因为文件较大,不能用普通数组,否则会栈溢出,所以只能用静态数组 static mut jfile:[u8;1024102410]=[0;1024102410]; //读取代码,运算处理 let a2=jfile.iter().take(len); //提取其中某一段数据 //现在要将其写入文件 file3.write(&a2); //报错,不支持写入
/*
file3.write(&a2);
^^^ expected slice, found struct std::iter::Take
*/
单字节一字节写是可以的,因为File写入只能是普通的数组 &[u8]
单字节写入效率太慢,我文件大,还要运算,现有足足有20多秒,
将整个数组整体写入,求指点,如何将一个类似于List的集合转换为普通数组
类似于C# 的List.ToArray()
求大神指点,刚入门在写一个解密程序
1
共 5 条评论, 1 页
评论区
写评论基础太差了,努力学习中
谢谢大神,原来如此简单, jfile[100..200],
对,就是这样,我用take函数之后反而不行了。
没解决啊, 求大神编译试试 最后一句出错
//======================================== use std::fs::File; use std::io::Read; use std::io::SeekFrom; use std::env; use std::io::Seek; use std::io::Write; use std::io::BufWriter; use std::ptr; fn main() {
}
不过都过了这么久了,你的问题应该已经解决了吧
你这个我觉得直接用切片就行啊,类似jfile[100..200],得到的就是长度为100的slice然后就可以直接写入文件了。另外你这个读取文件的方式有点暴力啊,直接分配10M内存。当然10M不算太大,如果再大的话,应该就需要分段读了。