Привет, ЛОР! Есть у меня код чтобы доставать данные примитивных типов из буфера. Хочу написать аналогичный макрос чтобы писать в буфер примитивные типы. Первая попытка написать что-то разбилась о 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
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Как клонировать trait object? (2019)
- Форум Вопрос по Rust (2024)
- Форум Ord trait для f64 (2020)
- Форум Rust 2018, допишите, плз (2018)
- Новости Rust 1.31.0 (2018) (2018)
- Новости Rust 1.25.0 (2018)
- Форум rust, lifetime specifier (2014)
- Форум rust, ФП и lifetime (2016)
- Форум Что такое lifetime в Rust? (2015)
- Форум notebook lifetime (2020)