diff --git a/app/src/main/rust/Cargo.toml b/app/src/main/rust/Cargo.toml index 52e8fee96..5756b58a3 100644 --- a/app/src/main/rust/Cargo.toml +++ b/app/src/main/rust/Cargo.toml @@ -10,3 +10,4 @@ jni = "*" tl = "*" log = "*" android_logger = "*" +apply = "*" diff --git a/app/src/main/rust/src/lib.rs b/app/src/main/rust/src/lib.rs index 72d4fed2f..d78d7af1b 100644 --- a/app/src/main/rust/src/lib.rs +++ b/app/src/main/rust/src/lib.rs @@ -1,4 +1,5 @@ extern crate android_logger; +extern crate apply; extern crate jni; extern crate log; extern crate tl; @@ -6,6 +7,7 @@ extern crate tl; use std::ffi::c_void; use android_logger::Config; +use apply::Also; use jni::JNIEnv; use jni::objects::{JClass, JObjectArray, JString}; use jni::sys::{JavaVM, jint, jintArray, JNI_VERSION_1_6}; @@ -26,9 +28,7 @@ pub extern "system" fn Java_com_hippo_ehviewer_client_parser_HomeParserKt_parseL let vec: Vec = iter.filter_map(|e| Some(e.get(parser)?.inner_text(parser).parse::().ok()?)).collect(); if vec.len() == 3 { Some(vec) } else { None } }).unwrap_or(vec![]); - let jir = env.new_int_array(3).unwrap(); - env.set_int_array_region(&jir, 0, &vec).unwrap(); - jir.into_raw() + env.new_int_array(3).unwrap().also(|it| env.set_int_array_region(&it, 0, &vec).unwrap()).into_raw() } #[no_mangle] @@ -45,9 +45,7 @@ pub extern "system" fn Java_com_hippo_ehviewer_client_parser_FavoritesParserKt_p }).collect(); if vec.len() == 10 { Some(vec) } else { None } }).unwrap_or(vec![]); - let jir = env.new_int_array(10).unwrap(); - env.set_int_array_region(&jir, 0, &vec).unwrap(); - jir.into_raw() + env.new_int_array(10).unwrap().also(|it| env.set_int_array_region(&it, 0, &vec).unwrap()).into_raw() } #[no_mangle]