172 похожих чатов

Почему нельзя писать так? struct Foo; impl Foo { fn bar(&mut

self, s: String) { }
fn baz(&mut self) -> String { … }
}

let mut foo = Foo;
foo.bar(foo.baz());

error[E0499]: cannot borrow `foo` as mutable more than once at a time
--> src/main.rs:9:13
|
9 | foo.bar(foo.baz());
| --- --- ^^^ second mutable borrow occurs here
| | |
| | first borrow later used by call
| first mutable borrow occurs here

error: aborting due to previous error
ведь аргументы раньше вызова функции вычисляются, значит и ссылки должны в том же порядке захватываться

2 ответов

3 просмотра

Потому что borrow checker недостаточно умён. Пиши let a = foo.baz(); foo.bar(a);

потому что твой код эквивалентен { let tmp = foo.baz(); foo.bar(tmp) } Или вроде того. В общем параметры пересекаются с методом по лайфтаймам, известный факт. Единственный способ эого избежать — явно создать отдельную переменную

Похожие вопросы

Обсуждают сегодня

Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
Всем привет. Подскажите, пожалуйста, как вы реализовываете следующий функционал. Допустим есть форма, в которой имеется выпадающий список со значениями. Значения хранятся в БД...
Евгений
7
Хех, данные на форме всегда будут "из прошлого", т.к. перезаполнять поля формы в процессе редактирования пользователем - так себе идея. Пользователь может открыть форму редакт...
Alexander Somov
7
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
Карта сайта