我有这个数组
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图像缓冲区。
答案 0 :(得分:3)
类型&[T]
没有map
方法。如果您看到错误消息,则表示存在一个名为map
的方法,但该方法不适用于&mut &[u8]
或&mut [u8]
,因为这些类型不能实现{{1} } *。数组和其他集合通常具有用于创建迭代器的一个或一组方法。对于切片或数组,可以选择Iterator
(在引用上迭代)或iter()
(在移动的值上迭代并使用源集合)。
通常,您还希望将这些值收集到其他集合中:
into_iter()
*这些类型与代码中的类型有所不同(它们是可变的),表明产生此错误的代码与您在问题中所呈现的代码有些不同。