👣 Rust Совет недели: безопасный newtype для FFI без сюрпризов
Если оборачиваешь указатели или хендлы для FFI, не полагайся на “и так сойдёт”.
Явно зафиксируй layout через repr.
Связка repr(transparent) и repr(C) даёт предсказуемое представление в памяти. Тип снаружи выглядит как обёртка, а для компилятора это тот же layout, что и у внутреннего значения.
Что это даёт на практике
• бинарная совместимость с C
• отсутствие скрытых паддингов и перестановок полей
• возможность делать приведения без transmute
• нормальный, идиоматичный способ оборачивать raw handle и pointer
В итоге ты получаешь типобезопасность Rust без потери контроля над ABI.
Если работаешь с FFI и не фиксируешь repr, ты оставляешь поведение на усмотрение компилятора. И это рано или поздно выстрелит.
Post #1254
3.35K

- 👍 12
- ❤ 7
- 🔥 4
- 🥰 2
- 🤗 1