Rust
Фотография
нажмите — покажем
нажмите — покажем
🦀 Rust Pinning без магии: `Pin`, `Unpin` и `Future::poll`
Одна из самых сложных тем в Rust - зачем вообще нужен Pin и почему некоторые значения нельзя просто перемещать в памяти.
Хороший разбор строит механизм буквально с нуля и связывает его с тем, что реально встречается в async Rust:
- как работает Pin
- что означает Unpin
- почему self-referential структуры опасны
- при чём здесь Future
- почему Future::poll принимает Pin<&mut Self>
Главная идея: некоторые значения после начала использования должны оставаться по одному адресу в памяти, иначе внутренние ссылки могут стать невалидными.
Особенно полезно тем, кто пользуется async/await, но до конца не понимает, что происходит под капотом.
https://gmcgoldr.github.io/2026/08/27/pin-in-rust.html
71 · 4.2K ·