Мне интересно заняться программированием на низком уровне Rust и React-Native, этот твит Джаредом Самнером вызвал у меня интерес.
Так что в основном он использовал JSI для Реализация на c ++ и, по-видимому, результаты намного быстрее, чем в обычных библиотеках, поэтому я приступил к изучению и следовал некоторым учебникам , чтобы получить код ржавчины, работающий над проектом RN.
Вот мой базис c код ржавчины:
extern crate libc;
mod string;
use string::StringPtr;
// string ffi
#[no_mangle]
pub unsafe extern "C" fn rust_string_ptr(s: *mut String) -> *mut StringPtr {
Box::into_raw(Box::new(StringPtr::from(&**s)))
}
#[no_mangle]
pub unsafe extern "C" fn rust_string_destroy(s: *mut String) {
let _ = Box::from_raw(s);
}
#[no_mangle]
pub unsafe extern "C" fn rust_string_ptr_destroy(s: *mut StringPtr) {
let _ = Box::from_raw(s);
}
#[no_mangle]
pub unsafe extern "C" fn hello_world(name: *mut StringPtr) -> *mut String {
let name = (*name).as_str();
let response = format!("Hello {}!", name);
Box::into_raw(Box::new(response))
}
#[cfg(feature = "jni")]
#[allow(non_snake_case)]
pub mod android {
extern crate jni;
use self::jni::objects::{JClass, JString};
use self::jni::sys::jstring;
use self::jni::JNIEnv;
#[no_mangle]
pub unsafe extern "C" fn Java_com_mobile_1app_MobileAppBridge_helloWorld(
env: JNIEnv,
_: JClass,
name: JString,
) -> jstring {
let name: String = env.get_string(name).unwrap().into();
let response = format!("Hello {}!", name);
env.new_string(response).unwrap().into_inner()
}
}
Мне удалось скомпилировать код ржавчины и передать строку в код RN, модуль зарегистрирован, и я могу вызвать библиотеку и получить некоторые строки, однако теперь мой вопрос Как мне импортировать модуль фотографий из iOS, чтобы получить фото с камеры?
В основном я хотел бы заменить фреймворк Camera-Roll на более быструю реализацию, мне нужно чтобы понять, как заставить библиотеку photos.h работать с кодом ржавчины.