C との相互運用性

Rust は、C の呼び出し規則によるオブジェクト ファイルのリンクを完全にサポートしています。同様に、Rust 関数をエクスポートして C から呼び出すことができます。

これは手動で行うこともできます。

unsafe extern "C" {
    safe fn abs(x: i32) -> i32;
}

fn main() {
    let x = -42;
    let abs_x = abs(x);
    println!("{x}, {abs_x}");
}

We already saw this in the Safe FFI Wrapper exercise.

これは、ターゲット プラットフォームを完全に理解していることを前提としています。本番環境での使用推奨されません。

次に、より良い選択肢を見ていきます。