我正在使用某些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友好包装器的最佳方法是什么?
非常感谢!