arrays - 如何在 Rust 中映射数组引用

标签 arrays rust iterator

我有这个数组

let buffer: &[u8] = &[0; 40000];

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

*buffer.map( |x| 0xff);

我有以下错误:

error[E0599]: no method named `map` found for type `&[u8]` in the current scope   
     --> src/bin/save_png.rs:12:13
    | 
 12 |     *buffer.map( |x| 0xff); //.map(|x| 0xff);
    |             ^^^
    |
    = note: the method `map` exists but the following trait bounds were not satisfied:
            `&mut &[u8] : std::iter::Iterator`
            `&mut [u8] : std::iter::Iterator`

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

最佳答案

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

通常,您还希望将这些值收集到其他集合中:

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

关于arrays - 如何在 Rust 中映射数组引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53561870/

相关文章:

iphone - 程序收到信号 "EXC_Bad_Access"NSMutableArray

javascript - ReactJS - 搜索/迭代对象数组

rust - 如何使用滑动窗口对生成迭代器?

javascript - Jquery检查数组是否包含子字符串

python - 如何使用数组中的方法将date_range 转换为字符串?

syntax - 是否有在相似结构之间移动字段的语法?

delegates - 为可以委托(delegate)的解析器借用检查器问题

path - 我可以使用 `std::path::Path` 的 `strip_prefix` 来替换动态前缀吗?

python - 可迭代预期的原始文本文档,接收到字符串对象

c++ - 启用S​​TL迭代器调试的真正作用是什么?