Size: a a a

2020 December 15

AK

Andrey Kapitonov in Rust Beginners
Oleg Shirokov
Или enumerate делать по копии diff.
В общем-то подобный код и в C\C++ ничего хорошего бы не делал =)
Или enumerate делать по копии diff.

сейчас попробую

В общем-то подобный код и в C\C++ ничего хорошего бы не делал =)

та я тока пытаюсь тыкать, тестовый проект пытаюсь запилить)
источник

AK

Andrey Kapitonov in Rust Beginners
я конечно тупил, там же есть (x, y, pixel) - pixel

если я првильно понимаю, необходимо нечто следующее а не put_pixel()

*pixel = Rgba([255, 0, 0, 255]);
источник

KK

Kirill (Cykooz) Kuzm... in Rust Beginners
Andrey Kapitonov
Привет, нужен хелп

for (x, y, pixel) in diff.enumerate_pixels_mut() {
       let pixel_1 = liza_1.get_pixel(x, y);
       let pixel_2 = liza_2.get_pixel(x, y);

       if pixel_1 != pixel_2 {
           let delta: f64 = delta(pixel_1, pixel_2);

           if delta > MAX_DELTA {
               diff.put_pixel(x, y, Rgba([255, 0, 0, 255]));
               diff_pixels_counter += 1
           }
       } else {
           diff.put_pixel(x, y, *pixel_1)
       }
   }

Получаю ошибку:

error[E0499]: cannot borrow `diff` as mutable more than once at a time
 --> src\main.rs:65:13
  |
50 |     for (x, y, pixel) in diff.enumerate_pixels_mut() {
  |                          ---------------------------
  |                          |
  |                          first mutable borrow occurs here
  |                          first borrow later used here
...
65 |             diff.put_pixel(x, y, *pixel_1)
  |             ^^^^ second mutable borrow occurs here


как побороть это?
Выше уже ты сам написал, повторюсь - у тебя уже есть мутабельная ссылка на pixel, который ты пытаешься менять (если конечно метод enumerate_pixels_mut() делает то что в нём написано). Просто запиши в него новое значение вместо вызова метода put_pixel()
источник

AK

Andrey Kapitonov in Rust Beginners
Kirill (Cykooz) Kuzminykh
Выше уже ты сам написал, повторюсь - у тебя уже есть мутабельная ссылка на pixel, который ты пытаешься менять (если конечно метод enumerate_pixels_mut() делает то что в нём написано). Просто запиши в него новое значение вместо вызова метода put_pixel()
да, я так и сделал
источник

NL

Nick Linker in Rust Beginners
Коллеги, напоминаю про
https://t.me/rust_beginners_ru/93447
Если собираетесь прийти, поставьте напоминалочку там 😊
Telegram
Nick Linker in Rust Beginners
Декабрьский Rust-митап.

Вторник, 15 декабря 2020, 19:00..21:00 GMT+3 (временная зона Москвы)

Доклад: Rust: просто о сложном. (Михаил Грачев, Team Lead Evrone).
Так уж сложилось, что Rust имеет репутацию сложного языка программирования, понятного только узкому кругу программистов. Но это не так и в своём докладе я бы хотел рассказать вам о Rust просто и без лишней сложности. Попутно сравнивая его с другими языками программирования. Доклад ориентирован на программистов, которые присматриваются к Rust.

Запись будет доступна по ссылке: https://youtu.be/yCrc5BwZrtw однако в онлайне будет возможность задать каверзные вопросы и прото поделиться своим опытом.

О возможных изменениях вы можете узнать в чате митапа http://t.me/ruRust_msk

Митап проводится при поддержке: - online-школы английского языка Skyeng и онлайн-школы Skysmart.
Информационный партнëр:
https://itmeeting.ru/ - телеграм-канал с анонсами бесплатных мероприятий по разработке.
источник

JM

John Meow in Rust Beginners
Nick Linker
Декабрьский Rust-митап.

Вторник, 15 декабря 2020, 19:00..21:00 GMT+3 (временная зона Москвы)

Доклад: Rust: просто о сложном. (Михаил Грачев, Team Lead Evrone).
Так уж сложилось, что Rust имеет репутацию сложного языка программирования, понятного только узкому кругу программистов. Но это не так и в своём докладе я бы хотел рассказать вам о Rust просто и без лишней сложности. Попутно сравнивая его с другими языками программирования. Доклад ориентирован на программистов, которые присматриваются к Rust.

Запись будет доступна по ссылке: https://youtu.be/yCrc5BwZrtw однако в онлайне будет возможность задать каверзные вопросы и прото поделиться своим опытом.

О возможных изменениях вы можете узнать в чате митапа http://t.me/ruRust_msk

Митап проводится при поддержке: - online-школы английского языка Skyeng и онлайн-школы Skysmart.
Информационный партнëр:
https://itmeeting.ru/ - телеграм-канал с анонсами бесплатных мероприятий по разработке.
Есть смысл приходить за полчаса до конца?
источник

NL

Nick Linker in Rust Beginners
John Meow
Есть смысл приходить за полчаса до конца?
Не знаю. Ты не новичок, а доклад ориентирован на тех, кто сомневается погружаться в Rust или нет. Решай сам.
В любом случае запись будет.
источник

JM

John Meow in Rust Beginners
Nick Linker
Не знаю. Ты не новичок, а доклад ориентирован на тех, кто сомневается погружаться в Rust или нет. Решай сам.
В любом случае запись будет.
Я не новичок? Странно, я всего несколько месяцев учу.
источник

NL

Nick Linker in Rust Beginners
John Meow
Я не новичок? Странно, я всего несколько месяцев учу.
Ну..., зависит от определения 😊
источник

JM

John Meow in Rust Beginners
Nick Linker
Ну..., зависит от определения 😊
Новичок - ..B2, если по аналогии с CEFR
источник

DT

Duong Minh Tri in Rust Beginners
oh man
источник

NL

Nick Linker in Rust Beginners
Duong Minh Tri
oh man
exciting?
источник

E

Eugene in Rust Beginners
подскажите, я могу так написать:
pub trait PushNotifications<'a>: Send + Sync + 'static {
type SubscribeToPushNotificationsStream<'a>: Stream<Item = Result<NotificationResponse, Status>>+ Send + Sync + 'static;
       async fn subscribe_to_push_notifications<'a>(
           &'a mut self,
           request: tonic::Request<NotificationRequest>,
       ) -> Result<tonic::Response<Self::SubscribeToPushNotificationsStream<'a>>, Status>;
}
источник

E

Eugene in Rust Beginners
как мне указать lifetime у &mut self ?
источник

li

long long int in Rust Beginners
Eugene
как мне указать lifetime у &mut self ?
У лайфтаймов же выведение (или как его) есть. Разве нужно?
источник

MB

Mikail Bagishov in Rust Beginners
Eugene
подскажите, я могу так написать:
pub trait PushNotifications<'a>: Send + Sync + 'static {
type SubscribeToPushNotificationsStream<'a>: Stream<Item = Result<NotificationResponse, Status>>+ Send + Sync + 'static;
       async fn subscribe_to_push_notifications<'a>(
           &'a mut self,
           request: tonic::Request<NotificationRequest>,
       ) -> Result<tonic::Response<Self::SubscribeToPushNotificationsStream<'a>>, Status>;
}
Я не уверен, что async-trait это поддерживает.
А еще, ты тут хочешь GATы использовать?
источник

E

Eugene in Rust Beginners
Mikail Bagishov
Я не уверен, что async-trait это поддерживает.
А еще, ты тут хочешь GATы использовать?
не то, чтобы хочу использовать gat;
суть в том, что в реализации того метода из trait создаётся объект другой структуры, в которую передаётся self;
источник

MB

Mikail Bagishov in Rust Beginners
Тот код, который ты сейчас написал, использует GATы
источник

E

Eugene in Rust Beginners
Mikail Bagishov
Тот код, который ты сейчас написал, использует GATы
это было для примера, мне нужно понять, можно ли так писать
источник

MB

Mikail Bagishov in Rust Beginners
Указать лайфтайм у self в трейте - да, можно.

Сработает ли это с async-trait - не знаю
источник