我想颠倒切片的顺序:
&[1, 2, 3] -> &[3, 2, 1]
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
fn iterate_over_file(data: &[u8], ...) -> ... {
...
for cur_data in data.chunks(chunk_size) {
let reversed_cur_data = cur_data.reverse() // this returns ()
...
...
}
Run Code Online (Sandbox Code Playgroud)
这个data
参数来自我读过的文件FileBuffer
,我想把它作为一个引用的片段(而不是把它变成一个拥有的Vec
,因为它是一个繁重的计算).
如何cur_data
以最少的操作和内存分配来颠倒顺序?它的长度以我的程序的特定运行时(在此处称为chunk_size
)而闻名,但它在不同的运行之间发生变化.reversed()
似乎返回()
,这是有道理的,因为它是就地完成的,我只有一个引用的切片..iter().rev()
创建一个迭代器,但是我必须多次调用.next()
它来获得切片,这既不优雅又无效,因为cur_data
每个文件至少有数千万行.