您所要求的确切内容是不可能的,因为根据定义,切片是连续的内存块。要拥有&[0u8, 2, 4],您需要拥有与 等效的东西[0u8, 2, 4],即这三个字节彼此直接相邻。
从概念上讲,您要求的东西看起来像stride,即产生一系列元素并跳过其中一些元素的东西。使用迭代器可以相对轻松地完成此操作,例如,如下所示:
fn only_first_byte_from_pair<'a>(data: &'a [u8]) -> impl Iterator<Item = u8> + 'a {
return data.chunks(2).map(|chunk| chunk[0])
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以查看ndarray,它具有开箱即用的相关功能,但对于实际任务来说可能有点过于复杂。