作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个数组
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/
我是一名优秀的程序员,十分优秀!