Привет, ЛОР! Есть у меня код чтобы доставать данные примитивных типов из буфера. Хочу написать аналогичный макрос чтобы писать в буфер примитивные типы. Первая попытка написать что-то разбилась о borrow checker. Я по подсказке компилятора проставил одинаковые лайфтамы и это сработало, но так можно записать только одно значение. Мне объяснили, что так получается из-за попытки взять мутабельную ссылку на мутабельную ссылку. И предложили такой вариант. (Сам я додумался только заменить мутабельную ссылку на мутабельный указатель, но это unsafe) Однако, даже без лайфтаймов всё работает благодаря трюку с mem::replace. У меня 2 вопроса. Действительно ли нельзя без трюка с mem::replace? И почему трюк с mem::replace работает? Ведь под капотом у него swap и, если я правильно понимаю, после вызова mem::replace в $A должно находится &mut [] и присвоение туда rest не должно затрагивать исходный массив. Если сбросите чего почитать на тему – буду благодарен, из книги я не понял почему это работает.
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от andalevor

Ответ на:
комментарий
от Marvel
Ответ на:
комментарий
от andalevor

Ответ на:
комментарий
от Marvel
Ответ на:
комментарий
от Marvel

Ответ на:
комментарий
от mersinvald
Ответ на:
комментарий
от DarkEld3r

Ответ на:
комментарий
от mersinvald
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум rust, lifetime specifier (2014)
- Форум rust, ФП и lifetime (2016)
- Форум Что такое lifetime в Rust? (2015)
- Форум notebook lifetime (2020)
- Форум replace (2006)
- Форум replace string (2017)
- Форум vim replace (2014)
- Форум cooledit replacement (2007)
- Форум Mrtg replace (2002)
- Форум mldonkey+mem (2007)
