UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Rust】FFIとは

Rust Tokyo 2021に参加したときに下のセッションでRustのFFIについて説明されていた

speakerdeck.com

そもそもFFIがなんなのかわからなかったので調べた

Foreign Function Interface

Wikipediaによると

Foreign function interface(フォーリン・ファンクション・インターフェイスFFI)とは、あるプログラミング言語から他のプログラミング言語で定義された関数などを利用するための機構。主に高水準言語からC/C++などの関数やメソッドを呼び出し、OS固有の機能などを利用するために使用されることが多い。 FFIという用語はCommon Lispにおける仕様に由来し、Haskellでも同様にFFIという用語が使われている。Adaなどでは言語間バインディング(または単にバインディング, language binding)と呼ばれている。 FFIという用語自体に「関数(Function)」という言葉が含まれているが、多くのFFIでは単に他言語で書かれた関数が呼び出せるだけではなく、オブジェクトのメソッドを呼び出したり、その返り値を取得し、データ型やクラスを言語間で相互変換することができる。

https://ja.wikipedia.org/wiki/Foreign_function_interface

他のプログラミング言語で定義された関数などを利用するための機構であることがわかった

RustのFFI

RustのFFIC言語には対応しているがC#には対応していないもよう

doc.rust-lang.org

CもRustも知識が乏しいので今回は用語だけ知っておくに留めておく

他参考

https://qiita.com/termoshtt/items/0fa9959f9eb64b0907e2

https://doc.rust-jp.rs/rust-by-example-ja/std_misc/ffi.html