Как позвонить в iOS библиотеку фотографий из Rust? - PullRequest
0 голосов
/ 19 февраля 2020

Мне интересно заняться программированием на низком уровне 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 работать с кодом ржавчины.

...