FFI!

なんということはない。

Rust side

  1. まず、crateを準備

  2. Cargo.toml

[lib]
crate-type: ["cdylib"]
  1. src/lib.rs
#[no_mangle]
pub extern "C" fn rustfunc1(...) -> ... {
      ...
}
  1. cargo build --release

Smalltalk side

  1. Package Installer でFFIをインストール

  2. Classを作りメソッドを用意

test: arg
  <cdecl: returnType 'rustfunc1' (argTypes) module:  '/path-to-home-directory/.cargo/shared-target/release/crate_name.dylib' >
  ^self externalCallFailed

なお、cargo artifactsの置き場は共通、OSはMacOSを想定。

細かいことは https://wiki.squeak.org/squeak/2426 を参照のこと。

あっという間にできちゃった。