diff --git a/eo-maven-plugin/src/main/java/org/eolang/maven/rust_project/Module.java b/eo-maven-plugin/src/main/java/org/eolang/maven/rust_project/Module.java
index cec8ef98fb..36b5bea9db 100644
--- a/eo-maven-plugin/src/main/java/org/eolang/maven/rust_project/Module.java
+++ b/eo-maven-plugin/src/main/java/org/eolang/maven/rust_project/Module.java
@@ -72,8 +72,9 @@ public void save(final Footprint footprint) throws IOException {
*/
private String transform() {
final String signature = String.format(
- "#[no_mangle]%spub extern \"system\" fn Java_EOorg_EOeolang_EOrust_%s(_env: JNIEnv, _class: JClass,) -> jint {",
+ "#[no_mangle]%spub extern \"system\" fn Java_EOrust_EOnatives_%s_%s(_env: JNIEnv, _class: JClass,) -> jint {",
System.lineSeparator(),
+ this.name,
this.name
);
return String.join(
diff --git a/eo-maven-plugin/src/test/java/org/eolang/maven/rust_project/ModuleTest.java b/eo-maven-plugin/src/test/java/org/eolang/maven/rust_project/ModuleTest.java
index 132129d56a..4ccbfd5ed5 100644
--- a/eo-maven-plugin/src/test/java/org/eolang/maven/rust_project/ModuleTest.java
+++ b/eo-maven-plugin/src/test/java/org/eolang/maven/rust_project/ModuleTest.java
@@ -62,7 +62,7 @@ void transformsCorrectly(@TempDir final Path temp) throws Exception {
"use jni::sys::{jint};",
"use jni::JNIEnv;",
"#[no_mangle]",
- "pub extern \"system\" fn Java_EOorg_EOeolang_EOrust_simple(_env: JNIEnv, _class: JClass,) -> jint {"
+ "pub extern \"system\" fn Java_EOrust_EOnatives_simple_simple(_env: JNIEnv, _class: JClass,) -> jint {"
)
);
}
diff --git a/eo-runtime/pom.xml b/eo-runtime/pom.xml
index 45f3df19c6..c267fbe07e 100644
--- a/eo-runtime/pom.xml
+++ b/eo-runtime/pom.xml
@@ -66,7 +66,7 @@ SOFTWARE.
org.cactoos
cactoos
- test
+ provided
org.llorllale
diff --git a/eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java b/eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java
index e9b7990947..5ce5f78b8a 100644
--- a/eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java
+++ b/eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java
@@ -27,9 +27,21 @@
*/
package EOorg.EOeolang;
+import EOrust.EOnatives.xhomextardis3xeoxeoxruntimextargetxeoxtest0;
+
+import java.io.ByteArrayInputStream;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.Base64;
+import java.util.concurrent.ConcurrentHashMap;
+
import org.apache.commons.lang3.NotImplementedException;
import org.apache.commons.lang3.SystemUtils;
+import org.cactoos.text.TextOf;
import org.eolang.AtComposite;
import org.eolang.AtFree;
import org.eolang.Data;
@@ -50,7 +62,16 @@
*/
@XmirObject(oname = "rust")
public class EOrust extends PhDefault {
+ private static ConcurrentHashMap names;
static {
+ try {
+ names = load("target/eo-test/names");
+ } catch (IOException e) {
+ throw new RuntimeException(
+ "Cannot read the file target/eo-test/names",
+ e
+ );
+ }
final String lib;
if (SystemUtils.IS_OS_WINDOWS) {
lib = "common.dll";
@@ -91,8 +112,45 @@ public EOrust(final Phi sigma) {
new AtComposite(
this,
rho ->
- new Data.ToPhi(1234L)
+ {
+ System.out.println();
+ return new Data.ToPhi(
+ (long) xhomextardis3xeoxeoxruntimextargetxeoxtest0.xhomextardis3xeoxeoxruntimextargetxeoxtest0()
+ );
+ }
)
);
}
+ private static ConcurrentHashMap load(final String src) throws IOException {
+ System.out.println(Paths.get(src).toAbsolutePath());
+ try (ObjectInputStream map = new ObjectInputStream(
+ new ByteArrayInputStream(
+ Base64.getDecoder().decode(
+ new TextOf(Paths.get(src)).asString()
+ )
+ )
+ )) {
+ final Object result = map.readObject();
+ if (result.getClass() != ConcurrentHashMap.class) {
+ throw new ClassCastException(
+ String.format(
+ "Object inside %s has wrong class %s",
+ src,
+ result.getClass()
+ )
+ );
+ }
+ return (ConcurrentHashMap) result;
+ } catch (final ClassNotFoundException exc) {
+ throw new IllegalArgumentException(
+ String.format(
+ "File %s contains invalid data",
+ src
+ ),
+ exc
+ );
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
}