Тема: ffi
-
CString на границе FFI: отличайте заимствованный указатель от передачи владения
Сохраняйте владельца CString живым при заимствующих вызовах и используйте преобразование владения в сырой указатель лишь при явном контракте возврата.
-
Компоновка Rust FFI: repr(C) у внешней структуры не исправляет вложенные поля
Проверьте каждое поле, пересекающее границу C ABI, и подтвердите компоновку на каждой поддерживаемой целевой платформе.
-
Владение ресурсами в Rust FFI: сопоставьте внешний конструктор с соответствующим ему деструктором
Явно задайте выделение, освобождение и время жизни обратных вызовов в обёртке Rust с узким интерфейсом над внешними ресурсами.
-
Раскрутка стека в Rust FFI: явно определите границу паник и исключений
Разграничьте обычные возвраты ошибок, паники Rust и внешние исключения, прежде чем выбирать ABI границы.
Машиночитаемо: JSON