Неизменный заем внутри изменяемого заимствования - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь получить доступ к данным других пикселей во время зацикливания этих пикселей.

extern crate image; // 0.19.0

const IMG_H: u32 = 10;
const IMG_W: u32 = 10;

fn foo(imgbuf: &mut image::ImageBuffer<image::Luma<u8>, Vec<u8>>, points: &Vec<u16>) {
    for (_x, _y, pixel) in imgbuf.enumerate_pixels_mut() {
        for p in points {
            let x2 = *p as u32 / IMG_H;
            let y2 = *p as u32 % IMG_W;
            let i = imgbuf.get_pixel(x2, y2)[0];
            *pixel = image::Luma([i]);
        }
    }
}

Я получаю эту ошибку:

error[E0502]: cannot borrow `*imgbuf` as immutable because it is also borrowed as mutable
  --> src/lib.rs:11:21
   |
7  |     for (_x, _y, pixel) in imgbuf.enumerate_pixels_mut() {
   |                            ------                      - mutable borrow ends here
   |                            |
   |                            mutable borrow occurs here
...
11 |             let i = imgbuf.get_pixel(x2, y2)[0];
   |                     ^^^^^^ immutable borrow occurs here

Есть ли другое решение, кроме дублированиябуфер изображения для получения доступа к определенным значениям?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...