jni-android-sys:如何将本地变量转换为args



lib.rs:

use jni_glue::Env;
use jni_android_sys;
#[no_mangle]
extern "C" fn for_example(env: Env) {
let jstr = jni_android_sys::java::lang::String::new(&env).unwrap(); /* fn new<'env>(
      __jni_env: &'env Env
  ) -> Result<Local<'env, String>, Local<'env, Throwable>>
  */
let stfs = jni_android_sys::android::os::StatFs::new(&env, jstr).unwrap();
/* fn new<'env>(
__jni_env: &'env Env,
arg0: impl Into<Option<&'env String>>
) -> Result<Local<'env, StatFs>, Local<'env, Throwable>>
*/
}

我得到一个错误

error[E0277]: the trait bound `Option<&jni_android_sys::java::lang::String>: From<Local<'_, jni_android_sys::java::lang::String>>` is not satisfied
--> src/lib.rs:9:64
|
9  |     let stfs = jni_android_sys::android::os::StatFs::new(&env, jstr).unwrap();
|                -----------------------------------------       ^^^^ the trait `From<Local<'_, jni_android_sys::java::lang::String>>` is not implemented for `Option<&jni_android_sys::java::lang::String>`

理论上,我需要将Local<'env, String>转换为&' env String,但如何转换呢?这意味着什么?如何解决?

Local<'_, T>实现Deref<Target = T>。所以你应该能够像这样取消引用它:

StatFs::new(&env, &*jstr)

最新更新