将Rust函数声明转换为Rust中的外部“ C”声明

时间:2018-10-18 02:34:23

标签: rust

我正在使用某些C库,底层C函数的extern "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"函数调用的参数。

我正在bindgen生成的绑定之上开发Rust包装器,理想情况下,我想将Rust函数作为参数传递,并且Rust函数可以相应地转换为相应的extern "C"函数,可用作另一个extern "C"函数的回调参数。

我想知道Rust是否有任何内置支持允许我这样做?如果不是,那么为大量使用回调的C库实现Rust友好包装器的最佳方法是什么?

非常感谢!

0 个答案:

没有答案