#ocaml #ffi #rust

raml

直接在 Rust 中使用 OCaml FFI 绑定和运行时函数,无需任何 C

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2017 年 5 月 19 日

#2416Rust 模式

MIT 许可证

19KB
233

goats are actually the best animal ever invented

Raml - Rust 中的智能 OCaml FFI

无需离开 Rust 即可直接绑定 OCaml - 没有C桩代码!

(你仍然需要了解 C ffi 绑定的原理;如果了解,这些宏在命名和目的上几乎与 C 中的宏相同)

请参考 examples 目录中的示例,以了解 Rust 代码(在 rust 目录中)和 OCaml 代码(在 ocaml 目录中)。

同时,请见谅,我正在尝试添加更多文档和示例,但我非常忙;如果你看到什么,请随时添加 PR 或问题,谢谢 :)

一个基本示例演示了它们的用法

caml!(ml_beef, |parameter|, <local>, {
    let i = int_val!(parameter);
    let res = 0xbeef * i;
    println!("about to return  0x{:x} to OCaml runtime", res);
    local = val_int!(res);
} -> local);

宏负责自动声明 CAMLparam 等,以及 CAMLlocalCAMLreturn

如果你需要更精细的控制,可以使用 caml_body! 等。

文档

https://docs.rs/raml/

使用方法

raml 应该与最新的 rustc(我在 1.16 上测试过)兼容,且不要求使用夜间版本。

添加到你的 Cargo.toml

[dependencies]
raml = "0.1.0"

无运行时依赖