我使用 为相机的 C++ 库创建了一个 Rust 包装器,并且 C++ 库中bindgen
的相机句柄被定义为typedef void camera_handle
移植bindgen
为pub type camera_hanlde = ::std::os::raw::c_void
.
我能够成功连接到相机并拍摄图像,但是我想在一个单独的线程上运行代码来控制相机的温度,本质上是根据我想要的相机的当前温度来改变冷却器的功率与其余代码分开运行。这些调用需要相机句柄,但是当我生成一个新线程时,我不断收到错误消息:
'*mut std::ffi::c_void' cannot be sent between threads safely
在它下面,它提到了the trait 'std::marker::Send' is not implemented for '*mut std::ffi::c_void'
.
我怎样才能将它发送到另一个线程,以便我也可以在那里使用这个相机手柄?我对 Rust 有点陌生,并尝试过使用fragile
和send_wrapper
包装,但都没有成功。