Как создать безопасные привязки FFI для библиотеки, где ресурсы могут быть аннулированы в любое время? - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь создать композитор Wayland в Rust. Wayland является преемником оконной системы X11. Одна из наиболее полнофункциональных библиотек для разработки Wayland называется wlroots и написана в / для C. Я использовал это немного в прошлом, но в C. К сожалению, похоже, что создание безопасных привязок Rust для него будет трудным.

Автор архивированного в настоящее время проекта Way-Cooler попытался создать безопасные привязки, но у него было чрезвычайно трудное время, и в итоге он отказался на нем .

Основная проблема, по-видимому, заключается в том, что «ресурсы» Уэйленда - такие как клавиатуры и подключения монитора - могут быть удалены пользователем в любое время, просто отключив видеокабель. Уэйленд отправляет обратный вызов, когда это происходит, но память, подобная этой, которая может быть просто удалена в любой момент, явно не безопасна и не разрешена Rust.

Я кодировал в Rust раньше, но я не специалист по управлению памятью или всем инструментам, которые Rust предоставляет в std / non-std ящиках для помощи Как я могу go реализовать это, надеюсь, более элегантно / просто, чем предыдущие попытки сделать то же самое?

...