Пример самоссылочного буфера
«Самоссылающийся буфер» — это тип, который хранит ссылку на одно из своих полей:
// Copyright 2026 Google LLC
// SPDX-License-Identifier: Apache-2.0
pub struct SelfReferentialBuffer {
data: [u8; 1024],
cursor: *mut u8,
}
Такая структура нетипична для Rust, потому что нет способа обновить адрес курсора при перемещении экземпляров SelfReferentialBuffer.
Однако такая конструкция более естественна в языках со сборкой мусора, а также в C++, который позволяет пользователям определять собственное поведение при перемещении и копировании.
План
Этот раздел должен занять около 1 часа 20 минут. В нём есть:
| Слайд | Длительность |
|---|---|
| Что такое закрепление | 5 минут |
| Определение Pin | 5 минут |
| PhantomPinned | 5 минут |
| Пример самоссылочного буфера | 50 минут |
| Pin | 15 минут |