Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpSpBx 92 of 288 menu
◀ ▶

Коробка для значения в куче в Rust

Когда одно значение должно жить в куче, его оборачивают в коробку. Сама коробка имеет фиксированный размер на стеке, а тяжелое содержимое лежит отдельно. Так удобно передавать владение большим данным и хранить их, не раздувая кадр стека.

В разделе про объект трейта коробка уже встречалась как оболочка для неизвестного размера. Здесь тот же тип работает сам по себе: внутри может быть обычное число, строка или своя структура с известным размером.

Создадим коробку с целым и прочитаем число через звездочку:

fn main() { let b = Box::new(7); let n = *b; println!("{}", n); }

Переменная b владеет коробкой, а запись *b копирует значение из кучи. Пока живет b, память под семеркой не освобождается.

Тот же прием подойдет для своей структуры:

struct Point { x: i32, y: i32, } fn main() { let p = Box::new(Point { x: 1, y: 2 }); println!("{} {}", p.x, p.y); }

Дано число:

let num = 12;

Положите литерал в коробку, прочитайте его через разыменование и выведите на экран.

Дана структура:

struct Label { code: i32, }

Соберите значение с полем code: 5 в коробке и выведите поле из main.

Скажите, почему размер переменной типа коробки не растет вместе с размером структуры внутри кучи.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить