FFI

36 projects

FFI tools let Rust code call, or be called from, other languages. For Python, PyO3 is the standard choice: it exposes Rust functions and classes as a native module, and maturin builds and publishes the wheels. rust-cpython is an older alternative. For JavaScript, wasm-bindgen generates the glue between WebAssembly and JS, and wasm-pack packages the result for npm. Neon builds native Node.js modules.

For C and C++, bindgen generates Rust declarations from C headers, and cbindgen goes the other way, generating C headers for a Rust library. cxx provides a safer bridge to C++ by declaring both sides of the interface in one place and checking it at compile time. It is a better fit than raw extern blocks when you share strings, vectors or smart pointers.

Other languages are covered too: Rustler writes Erlang and Elixir NIFs, mlua embeds Lua and Luau, rutie and ruru target Ruby, csbindgen generates C# bindings, and phper builds PHP extensions. The category also includes RustPython, a Python interpreter written in Rust, and Scryer Prolog. Whatever the language, keep the boundary narrow: pass simple types across it and do the heavy work on the Rust side.

girby gtk-rsC

Code generator for creating safe Rust bindings from GObject-based C libraries.

0.19.0updated 2d ago

276

cbindgenby mozillaC

Generates C header files from Rust source files. Used in Gecko for WebRender

cbindgen0.29.417.9m/90d updated 1mo ago

3k

rusty-cheddarby Sean1708C

Generates C header files from Rust source files

rusty-cheddar0.3.31.7k/90d archived

187

librcloneby trevynC

Rust bindings for the librclone C library.

librclone0.9.06.9k/90d updated 1y ago

52

csbindgenby CysharpC#

Generates C# bindings for Rust source files

csbindgen1.9.8219.2k/90d updated 8d ago

958

cxxby dtolnayC++

Safe interop between Rust and C++

cxx1.0.20511.8m/90d updated 10d ago

6.8k

rust-cppC++

Embed C++ code directly in Rust.

cpp0.5.111.1m/90d

rust-bindgenby rust-langC++

A Rust bindings generator

bindgen0.73.287.8m/90d updated 4d ago

5.3k

rustlerby rusterliumErlang

Safe Rust bridge for creating Erlang NIF functions

rustler0.39.02.2m/90d updated today

4.9k

rjniby bennettandersonJava

Use Java from Rust

updated 9y ago

74

j4rsJava

Use Java from Rust

j4rs0.25.221.3k/90d

jniJava

Use Rust from Java

jni0.22.470.7m/90d

jni-sysJava

Rust definitions corresponding to jni.h

jni-sys0.4.184.2m/90d

rucajaJava

Use Java from Rust

rucaja0.4.544/90d

rust-lua53by jcmoyerLua

Lua 5.3 bindings for Rust

Cupdated 2y ago

162

rust-luaby lilyballLua

Safe Rust bindings to Lua 5.1

updated 6y ago

129

mluaby mlua-rsLua

High level Lua 5.4/5.3/5.2/5.1 (including LuaJIT) and Roblox Luau bindings to Rust with async/await support

mlua0.12.22.3m/90d updated 17d ago

2.9k

td_rluaby tickbhLua

Zero-cost high-level lua 5.3 wrapper for Rust

td_rlua0.3.4276/90d Cupdated 2y ago

53

hluaby tomakaLua

Rust library to interface with Lua

hlua0.4.39.4k/90d Cupdated 1y ago

521

mrustyby anima-enginemruby

Mruby safe bindings for Rust

mrusty1.0.0215/90d updated 5y ago

205

node-bindgenby infinyonNode.js

Easy way to generate nodejs module using Rust

node-bindgen6.1.01.9k/90d updated 1y ago

587

neonby neon-bindingsNode.js

Rust bindings for writing safe and fast native Node.js modules

neon1.1.21.2m/90d updated 18d ago

8.4k

node-ffi-rsby zhangyuangNode.js

A module written in Rust and N-API provides interface (FFI) features for Node.js

updated 2mo ago

350

rust-objcby SSheldonObjective-C

Objective-C Runtime bindings and wrapper for Rust

objc0.2.710.1m/90d updated 2y ago

416

phperby phper-frameworkPHP

The framework that allows us to write PHP extensions using pure and safe Rust whenever possible

phper0.17.33k/90d updated 1d ago

354

scryer-prologby mthomProlog

Scryer Prolog is a free software ISO Prolog system written in Rust

scryer-prolog0.10.04.1k/90d updated 1mo ago

2.5k

rust-cpythonby dgrunwaldPython

Python bindings

cpython0.7.275.2k/90d updated 2y ago

1.8k

milksnakeby getsentryPython

Extension for python setuptools that allows you to distribute dynamic linked libraries in Python wheels in the most portable way imaginable.

Pythonupdated 3y ago

804

PyO3Python

Rust bindings for the Python interpreter

pyo30.30.166.5m/90d updated today

16.3k

RustPythonPython

A Python Interpreter written in Rust

rustpython0.6.03.2k/90d updated today

22.4k

ruruby d-unsedRuby

Native Ruby extensions written in Rust

updated 5y ago

834

rutieby danielpclarkRuby

Native Ruby extensions written in Rust and vice versa

rutie0.14.35.6k/90d updated today

1k

wainby rhysdWeb Assembly

Wain: WebAssembly INterpreter from scratch in Safe Rust with zero dependency

wain0.1.723/90d updated 2y ago

461

wasm-bindgenWeb Assembly

A project for facilitating high-level interactions between wasm modules and JS.

wasm-bindgen0.2.129153.2m/90d updated today

9.2k

wasm-packby wasm-bindgenWeb Assembly

Package: pack up the wasm and publish it to npm!

wasm-pack0.15.01.2m/90d updated today

7.3k

Built on the open rust-unofficial/awesome-rust list by its contributors, licensed CC0 1.0. Crate Atlas is an independent project, not affiliated with the list's maintainers.

About Synced Oct 21, 2026

© 2026 Crate Atlas

Esc

Type to search every entry. ↑↓ to move, Enter to open.