[#] [Из песочницы] Работа с С-объединениями (union) в Rust FFI
habrabot(difrex,1) — All
2016-03-24 14:30:04


_Предлагаю вашему вниманию перевод статьи "[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