Приведите объявление функции Rust к внешнему объявлению "C" в Rust - PullRequest
0 голосов
/ 18 октября 2018

Я работаю с некоторой библиотекой C, и extern "C" для базовой функции C выглядит следующим образом:

std::option::Option<unsafe extern "C" fn(bdev_io: *mut spdk_bdev_io, success: bool, cb_arg: *mut ::std::os::raw::c_void)>

Базовая библиотека C интенсивно использует обратный вызов, что означает, что мне всегда нужно передавать некоторыеФункция extern "C", как указано выше, в качестве аргумента для другого вызова функции extern "C".

Я разрабатываю оболочку Rust поверх привязок, сгенерированных bindgen, и в идеале я хочу передать функцию Rust какАргумент и функцию Rust можно преобразовать в соответствующую функцию extern "C" соответственно, которую можно использовать в качестве аргумента обратного вызова для другой функции extern "C".

Мне интересно, есть ли какая-либо встроенная поддержкаиз Rust позволяет мне это сделать?Если нет, то что может быть хорошим способом реализации оболочки Rust-friendly для библиотеки C, которая интенсивно использует обратный вызов?

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...