An example of Clojure program calling a Rust library, all combined into one executable using GraalVM. It gets the amount of free memory via the heim-rs library and prints it in EDN format.
This repo is an adapted example of what is described in the README of the Rust jni library.
In clojure/src-java
there is a Java static method which calls a Rust function
via JNI. We call this static method from Clojure.
$ time ./clojure-rust megabyte
{:memory/free [:megabyte "1210"]}
./clojure-rust megabyte 0.01s user 0.01s system 34% cpu 0.027 total
Accepted options: byte
, megabyte
, gigabyte
.
Prerequisites:
Run script/compile
to build the Rust lib, the Clojure uberjar and the GraalVM executable.
Finally, run the executable:
$ target/clojure-rust
{:memory/free [:byte "896126976"]}
Copyright © 2020 Michiel Borkent
Distributed under the EPL License, same as Clojure. See LICENSE.