2
0

forward_declaration.rs 305 B

123456789101112131415161718192021
  1. #[repr(C)]
  2. struct TypeInfo {
  3. data: TypeData,
  4. }
  5. #[repr(C)]
  6. enum TypeData {
  7. Primitive,
  8. Struct(StructInfo),
  9. }
  10. #[repr(C)]
  11. struct StructInfo {
  12. fields: *const *const TypeInfo, // requires forward declaration
  13. num_fields: usize,
  14. }
  15. #[no_mangle]
  16. pub extern "C" fn root(
  17. x: TypeInfo,
  18. ) {}