Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Пример самоссылочного буфера

«Самоссылающийся буфер» — это тип, который хранит ссылку на одно из своих полей:

// 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 минут
Определение Pin5 минут
PhantomPinned5 минут
Пример самоссылочного буфера50 минут
Pin и Drop15 минут