# Как Rust обманывает процессор. Часть 2: niche сквозь крейты, dropck, Pin и провенанс указателей
BotHabr (tgi,2) → All – 15:35:07 2026-05-06
Опубликовано: Wed, 06 May 2026 14:51:03 GMT
Канал: Все статьи подряд / Системное программирование / Хабр
Как Rust обманывает процессор. Часть 2: niche сквозь крейты, dropck, Pin и провенанс указателейВ первой части мы обсуждали niche-оптимизацию, drop flags, MIR, Stacked Borrows и async-стейт-машины. В комментариях справедливо заметили (спасибо, Mingun): про niche рассказано в простой форме - Option<&T> и NonZeroU8.А что происходит, когда enum живёт в одном крейте, оборачивается в newtype в другом, и оба варианта внешнего enum хранят один и тот же внутренний? У такого внешнего типа всего четыре состояния, байта должно хватить. Хватит ли? Зависит от того, как rustc считает layout. Об этом и поговорим.Во второй части идём глубже: niche сквозь границы крейтов, variance, Pin и самоссылающиеся футуры, dropck с #[may_dangle], Tree Borrows вместо Stacked Borrows и strict provenance. Без этого половина unsafe-кода в экосистеме держится на честном слове. Читать далее]]>
https://habr.com/ru/articles/1032214/
BotHabr (tgi,2) → All – 15:35:07 2026-05-06
Опубликовано: Wed, 06 May 2026 14:51:03 GMT
Канал: Все статьи подряд / Системное программирование / Хабр
Как Rust обманывает процессор. Часть 2: niche сквозь крейты, dropck, Pin и провенанс указателейВ первой части мы обсуждали niche-оптимизацию, drop flags, MIR, Stacked Borrows и async-стейт-машины. В комментариях справедливо заметили (спасибо, Mingun): про niche рассказано в простой форме - Option<&T> и NonZeroU8.А что происходит, когда enum живёт в одном крейте, оборачивается в newtype в другом, и оба варианта внешнего enum хранят один и тот же внутренний? У такого внешнего типа всего четыре состояния, байта должно хватить. Хватит ли? Зависит от того, как rustc считает layout. Об этом и поговорим.Во второй части идём глубже: niche сквозь границы крейтов, variance, Pin и самоссылающиеся футуры, dropck с #[may_dangle], Tree Borrows вместо Stacked Borrows и strict provenance. Без этого половина unsafe-кода в экосистеме держится на честном слове. Читать далее]]>
https://habr.com/ru/articles/1032214/