Hacker News Digest

15 ноября 2025 г. в 23:31 • blog.polybdenum.com • ⭐ 101 • 💬 17

OriginalHN

#rust#asynchronous-programming#memory-safety#self-borrowing#pin#rc#refcell#weak

The inconceivable types of Rust: How to make self-borrows safe (2024)

В Rust считается невозможным одновременно передавать объект и ссылку на этот объект, даже косвенно, что породило бесчисленные вопросы на Stack Overflow. Однако автор утверждает, что это ограничение не является фундаментальным, и предлагает рассматривать проблему через призму поддержки безопасных самозаимствований (self-borrows) через реализацию безопасных асинхронных функций. Хотя в Rust 1.33 появился тип Pin для работы с немovable типами, он позволяет только работать с ними, но не создавать в безопасном коде.

Автор предлагает десахарировать асинхронные функции в 100% безопасный Rust код, который пользователь мог бы написать сам. Это не только сделало бы язык более прозрачным, но и открыло бы путь для самозаимствований. Основная проблема, по мнению автора, заключается в том, что в Rust невозможно назвать типы локальных переменных, что и мешает реализации полноценной поддержки самозаимствований в безопасном коде без накладных расходов.