Rust image::SubImage,没有为类型找到名为“put_pixel”的方法?
Rust image::SubImage, no method named `put_pixel` found for type?
以下代码
cargo.toml
[dependencies]
image = "0.23.6"
src/main.rs
extern crate image;
use image::*;
fn main() {
let mut img: RgbImage = ImageBuffer::new(512, 512);
let a = SubImage::new(img, 0, 0, 1, 1);
a.put_pixel(Rgb::from_channels(0, 0, 0, 0));
}
产生错误:
error[E0599]: no method named `put_pixel` found for type `image::SubImage<image::ImageBuffer<image::Rgb<u8>, std::vec::Vec<u8>>>` in the current scope
--> src/main.rs:8:7
|
8 | a.put_pixel(Rgb::from_channels(0, 0, 0, 0));
| ^^^^^^^^^ method not found in `image::SubImage<image::ImageBuffer<image::Rgb<u8>, std::vec::Vec<u8>>>`
|
= note: the method `put_pixel` exists but the following trait bounds were not satisfied:
`image::SubImage<image::ImageBuffer<image::Rgb<u8>, std::vec::Vec<u8>>> : image::GenericImage`
这是为什么? SubImage
明确实施 GenericImage
。我应该怎么做才能使用SubImage::put_pixel()
?
SubImage
clearly implements GenericImage
. What should I do to use put_pixel()
?
GenericImageView
的 impl
是您可以访问的内容,因为传递的是不可变引用。
可以通过以下方式传递可变引用来访问 GenericImage
的 impl
:
let mut sub_image = SubImage::new(&mut img, 0, 0, 1, 1);
let mut sub_image = SubImage::new(img.inner_mut(), 0, 0, 1, 1);
更惯用的是,可以使用 sub_image()
方法,因为 img
是可变的:
let mut sub_image = img.sub_image(0, 0, 1, 1);
以下代码
cargo.toml
[dependencies]
image = "0.23.6"
src/main.rs
extern crate image;
use image::*;
fn main() {
let mut img: RgbImage = ImageBuffer::new(512, 512);
let a = SubImage::new(img, 0, 0, 1, 1);
a.put_pixel(Rgb::from_channels(0, 0, 0, 0));
}
产生错误:
error[E0599]: no method named `put_pixel` found for type `image::SubImage<image::ImageBuffer<image::Rgb<u8>, std::vec::Vec<u8>>>` in the current scope
--> src/main.rs:8:7
|
8 | a.put_pixel(Rgb::from_channels(0, 0, 0, 0));
| ^^^^^^^^^ method not found in `image::SubImage<image::ImageBuffer<image::Rgb<u8>, std::vec::Vec<u8>>>`
|
= note: the method `put_pixel` exists but the following trait bounds were not satisfied:
`image::SubImage<image::ImageBuffer<image::Rgb<u8>, std::vec::Vec<u8>>> : image::GenericImage`
这是为什么? SubImage
明确实施 GenericImage
。我应该怎么做才能使用SubImage::put_pixel()
?
SubImage
clearly implementsGenericImage
. What should I do to useput_pixel()
?
GenericImageView
的 impl
是您可以访问的内容,因为传递的是不可变引用。
可以通过以下方式传递可变引用来访问 GenericImage
的 impl
:
let mut sub_image = SubImage::new(&mut img, 0, 0, 1, 1);
let mut sub_image = SubImage::new(img.inner_mut(), 0, 0, 1, 1);
更惯用的是,可以使用 sub_image()
方法,因为 img
是可变的:
let mut sub_image = img.sub_image(0, 0, 1, 1);