foreign_typemap!( define_c_type!(module="MapPoint.h"; #[repr(C)] pub struct MapPoint { pub x: f64, pub y: f64, } ); (r_type) MapPoint; (f_type) "MapPoint"; ); foreign_typemap!( define_c_type!(module="MapRect.h"; #[repr(C)] pub struct MapRect { pub left_top: MapPoint, pub right_bottom: MapPoint, } ); (r_type) MapRect; (f_type) "MapRect"; ); type MapRectRef<'a> = &'a [MapPoint]; foreign_typemap!( ($p:r_type) MapRectRef <= *const MapRect { assert!(!$p.is_null()); let map_rect: &MapRect = unsafe { &*$p }; let points_arr: [MapPoint; 4] = map_rect.into(); $out = &points_arr; }; ($p:f_type, req_modules = ["\"MapRect.h\""]) <= "const MapRect &" "$p"; ); foreigner_class!(class Foo { fn f(a: MapRectRef); });