#[repr(C)] pub struct ROAResult(*const u8,i32); pub type LocalObject = i64; #[repr(C)] pub struct GlobalObject(u64,u64,u64,u64); impl From<[u64;4]> for GlobalObject { fn from(value: [u64;4]) -> Self { GlobalObject(value[0], value[1], value[2], value[3]) } } impl From for [u64; 4]{ fn from(value: GlobalObject) -> Self { let GlobalObject(a,b,c,d) = value; [a,b,c,d] } } extern "C"{ pub fn create_object(a: *const u8, b: i32) -> LocalObject; pub fn read_object_attribute(a: LocalObject, b: *const i8, c: i32) -> ROAResult; pub fn take_global(a: GlobalObject) -> LocalObject; pub fn make_global(a: LocalObject) -> GlobalObject; pub fn drop_object(a: LocalObject); }