из него, как это лучше сделать?
я с помощью jni передаю указатели на объекты из Rust в Java
с обычными объектами я делаю Box::into_raw и Box::from_raw
ну так у дебя дин майтрейт в боксе нет?
dyn trait это два указателя - данные+vtable
trait Animal {} struct CatImpl; impl Animal for CatImpl {} fn create_cat() -> Box<dyn Animal> { Box::new(CatImpl) } fn cat_to_ptr(cat: Box<dyn Animal>) -> *mut dyn Animal { Box::into_raw(cat) } fn ptr_to_cat(ptr: *mut dyn Animal) -> Box<dyn Animal> { unsafe { Box::from_raw(ptr) } } fn main() { let cat = create_cat(); let ptr = cat_to_ptr(cat); let cat = ptr_to_cat(ptr); } ну тогда проблем нет, нет?
как тогда на стороне Java *mut dyn Animal хранить?
как U128 если в жаве он есть
Обсуждают сегодня