Size: a a a

Rust — русскоговорящее сообществo

2020 August 15

А⚙

Антон ⚙️ in Rust — русскоговорящее сообществo
Андрей Казанцев
error[E0382]: borrow of moved value: `order`
 --> src\order_book\mod.rs:81:49
  |
79 |     fn match_market_order(&mut self, order: &mut MarketOrder) -> Result<Trades, Box<dyn Error>> {
  |                                      ----- move occurs because `order` has type `&mut order::MarketOrder`, which does not implement the `Copy` trait
80 |         let matches = self.get_possible_matches(order);
  |                                                 ----- value moved here
81 |         assert!(matches.get_matched_amount() <= order.get_amount());
  |                                                 ^^^^^ value borrowed here after move
Покажи код
источник

АК

Андрей Казанцев... in Rust — русскоговорящее сообществo
Alex Noname
Т.е. он залочен из за этого
В том то и дело что нет
источник

АК

Андрей Казанцев... in Rust — русскоговорящее сообществo
Антон ⚙️
Покажи код
Ну он весь наверху
источник

АК

Андрей Казанцев... in Rust — русскоговорящее сообществo
Функция в пару строк. Так как раз последовательно идёт
источник

AN

Alex Noname in Rust — русскоговорящее сообществo
Сигнатуру get matches
источник

АК

Андрей Казанцев... in Rust — русскоговорящее сообществo
А
fn get_possible_matches<T: Into<MatchTerms>>(&self, terms: T) -> Matches
источник

AN

Alex Noname in Rust — русскоговорящее сообществo
Ну вот ты берешь аргумент не по ссылке
источник

АК

Андрей Казанцев... in Rust — русскоговорящее сообществo
То есть он где то неявно делает разыменование?
источник

AN

Alex Noname in Rust — русскоговорящее сообществo
Нет
источник

АК

Андрей Казанцев... in Rust — русскоговорящее сообществo
T это же &mut MarketOrder
источник

T1

Tony 123 in Rust — русскоговорящее сообществo
Андрей Казанцев
То есть он где то неявно делает разыменование?
Он мувится
источник

АК

Андрей Казанцев... in Rust — русскоговорящее сообществo
Tony 123
Он мувится
Кто
источник

T1

Tony 123 in Rust — русскоговорящее сообществo
Объект
источник

АК

Андрей Казанцев... in Rust — русскоговорящее сообществo
Это ссылка, объект то лежит
источник

AN

Alex Noname in Rust — русскоговорящее сообществo
Сделай просто там &T
источник

T1

Tony 123 in Rust — русскоговорящее сообществo
terms мувитчя
источник

T1

Tony 123 in Rust — русскоговорящее сообществo
Покажи код чтобы мы не гадали и время не тратили просто на херню
источник

АК

Андрей Казанцев... in Rust — русскоговорящее сообществo
Alex Noname
Сделай просто там &T
Да я сделал &mut *order и всё заработало
источник

АК

Андрей Казанцев... in Rust — русскоговорящее сообществo
Просто похоже на баг компилятора
источник

А⚙

Антон ⚙️ in Rust — русскоговорящее сообществo
Андрей Казанцев
error[E0382]: borrow of moved value: `order`
 --> src\order_book\mod.rs:81:49
  |
79 |     fn match_market_order(&mut self, order: &mut MarketOrder) -> Result<Trades, Box<dyn Error>> {
  |                                      ----- move occurs because `order` has type `&mut order::MarketOrder`, which does not implement the `Copy` trait
80 |         let matches = self.get_possible_matches(order);
  |                                                 ----- value moved here
81 |         assert!(matches.get_matched_amount() <= order.get_amount());
  |                                                 ^^^^^ value borrowed here after move
self.get_possible_matches(&mut *order)
источник