Docsの目次

他の言語との連携

現在はRustの関数をNagiから呼べます。Highで@rustとextern defを宣言し、RustのファイルやCargoの依存をビルドに含めます。手書きLowは不要です。書き方はimportとRust連携を参照してください。

HighとLowの同じ型は、同じRust型へ変換します。同じビルド内の関数呼び出しでは、値をJSONなどへ変換し直す必要はありません。

この連携は同じRustビルド内の呼び出しであり、固定ABIや動的libraryの読込みではありません。Rust側の型の一致はbuildで検査します。Rustアダプターのunsafe操作や外部資源の後始末を、Nagiのcheckで保証することはできません。

このページの目次

Cとの連携

NagiやLowから任意のC関数を直接呼ぶ構文は未対応です。組み込みSQLiteでは、Rustのrusqliteとlibsqlite3-sysがCとの接続を担当しています。

Cに公開するための固定の型配置や、メモリの確保・解放を受け渡すABIも未定義です。Nagiのclassや文字列を、そのままCの値として扱うことはできません。

Nagi 0.2.0 · Docsこのページのソース