如何在 Rust 中映射数组引用

Wer*_*rem 2 arrays iterator rust

我有这个数组

let buffer: &[u8] = &[0; 40000];
Run Code Online (Sandbox Code Playgroud)

但是当我想像这样映射它时:

*buffer.map( |x| 0xff);
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

let buffer: &[u8] = &[0; 40000];
Run Code Online (Sandbox Code Playgroud)

我尝试了几种方法来使元素可变,但我无法获得正确的语法。有人有经验吗?我正在尝试使用 png 图像缓冲区。

Pet*_*all 7

该类型&[T]没有map方法。如果您查看错误消息,它会告诉您map存在一个名为的方法,但它不适用于&mut &[u8]&mut [u8]因为这些类型没有实现Iterator。数组和其他集合通常有一个方法或一组方法来创建迭代器。对于切片或数组,您可以选择iter()(遍历引用)或into_iter()(遍历移动的值并使用源集合)。

通常,您还需要将值收集到其他一些集合中:

let res: Vec<u8> = buffer
    .iter()
    .map(|x| 0xff)
    .collect();
Run Code Online (Sandbox Code Playgroud)

  • 你能得到一个数组,而不是转换为“Vec”吗? (3认同)