2

Rust で R の拡張 API を構築しています。関数に手続き型マクロで注釈を付けて、適切な変換とエラー処理を備えた C ラッパーを生成します。

use extendr_api::*;

#[export_function]
fn hello() -> &'static str {
    "hello"
}

これにより、メカニズムhello__wrapper__を使用して R から呼び出し可能なC 関数が生成されます。.Call

これに加えて、R メタデータ用の NAMESPACE ファイルを生成する必要があります。

export(hello)
useDynLib(libhello, "__wrap__hello")

そして、ファイルlib.R

hello <- function() {
  .Call("__wrap__hello")
}

cargo やrustcを拡張してこの追加情報を書き込む最も簡単な方法は何ですか? プロシージャル マクロ コードからファイルを作成するのは悪い考えだと思います。

4

1 に答える 1