ffi_convert.rs 595 B

123456789101112131415
  1. /// @brief 由bindgen生成的结构体转换成rust原生定义的结构体的特性
  2. pub trait FFIBind2Rust<T> {
  3. /// 转换为不可变引用
  4. fn convert_ref(src: *const T) -> Option<&'static Self>;
  5. /// 转换为可变引用
  6. fn convert_mut(src: *mut T) -> Option<&'static mut Self>;
  7. }
  8. pub fn __convert_mut<'a, S, D>(src: *mut S) -> Option<&'a mut D> {
  9. return unsafe { core::mem::transmute::<*mut S, *mut D>(src).as_mut() };
  10. }
  11. pub fn __convert_ref<'a, S, D>(src: *const S) -> Option<&'a D> {
  12. return unsafe { core::mem::transmute::<*const S, *const D>(src).as_ref() };
  13. }