_Предлагаю вашему вниманию перевод статьи "[Working with C unions in Rust FFI][1]" за авторством Herman J. Radtke III. Примечание: Эта статья предполагает, что читатель знаком с [Rust FFI][2], [порядком байтов][3] (endianess) и [ioctl][4]._ При создании биндингов к коду на С мы неизбежно столкнёмся со структурой, которая содержит в себе объединение. В Rust отсутствует встроенная поддержка объединений, так что нам придётся выработать стратегию самостоятельно. В С объединение — это тип, который хранит разные типы данных в одной области памяти. Существует много причин, по которым можно отдать предпочтение объединению, такие как: преобразование между бинарными представлениями целых чисел и чисел с плавающей точкой, реализация псевдо-полиморфизма и прямой доступ к битам. Я сфокусируюсь на псевдо-полиморфизме. [Читать дальше →][5]
[1]:
http://hermanradtke.com/2016/03/17/unions-rust-ffi.html
[2]:
https://doc.rust-lang.org/book/ffi.html
[3]:
https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2
[4]:
https://en.wikipedia.org/wiki/Ioctl
[5]:
https://habrahabr.ru/post/280063/#habracut