小编Hag*_*aiH的帖子

对不可变数组切片的引用的反向顺序

我想颠倒切片的顺序:

&[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每个文件至少有数千万行.

rust borrow-checker

1
推荐指数
1
解决办法
1058
查看次数

标签 统计

borrow-checker ×1

rust ×1