如何修复 Clippy 的needless_range_loop for 循环,该循环在具有偏移量的切片之间进行复制?

jan*_*jan 5 iterator rust rust-cargo rust-clippy

运行时cargo clippy,它会抱怨这样的代码:

pub fn from_bytes(data: [u8; 72]) -> Stuff {
    let mut ts = [0u8; 8];
    let mut cs = [0u8; 64];

    for b in 0..8 {
        ts[b] = data[b];
    }

    for bb in 0..64 {
        cs[bb] = data[bb + 8];
    }
}
Run Code Online (Sandbox Code Playgroud)

pub fn from_bytes(data: [u8; 72]) -> Stuff {
    let mut ts = [0u8; 8];
    let mut cs = [0u8; 64];

    for b in 0..8 {
        ts[b] = data[b];
    }

    for bb in 0..64 {
        cs[bb] = data[bb + 8];
    }
}
Run Code Online (Sandbox Code Playgroud)

我无法理解这些信息。如何更改为建议的方法?我不明白是怎么回事

for (bb, <item>) in cs.iter().enumerate().take(64)
Run Code Online (Sandbox Code Playgroud)

可以应用于我的用例。

Fre*_*ios 6

使用clone_from_slice

ts.clone_from_slice(&data[..8]);
cs.clone_from_slice(&data[8..]);
Run Code Online (Sandbox Code Playgroud)

  • 以及[报道](https://github.com/Manishearth/rust-clippy/issues/1831)。确实,这个 lint 存在一些已知的问题。 (3认同)