我正在用 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 以编写此附加信息的最简单方法是什么?我猜从程序宏代码编写文件是个坏主意。