Crate ocaml [−] [src]
ocaml-rs is a library for directly interacting with the C OCaml runtime, in Rust.
Note: ocaml-rs
is still experimental, please report any issues on github
This crate will allow you to write OCaml C stubs directly in Rust. It is suggested to build a static library to link to when compiling your OCaml code.
The following in Rust:
caml!(ml_add_10, |arg|, <result>, {
let n = arg.i32_val();
result = Value::i32(n + 10)
} -> result);
is equivalent to:
value ml_add_10(value arg) {
CAMLparam1(arg);
CAMLlocal(result);
int n = int_val(arg);
result = val_int(arg + 10)
CAMLreturn(result);
}
using the traditional C bindings.
For a more complete example see: https://github.com/zshipko/ocaml-vec
Re-exports
pub use value::ToValue; |
pub use value::FromValue; |
pub use value::Value; |
pub use runtime::*; |
Modules
conv | |
core | |
runtime | |
value |
Macros
array |
Create an OCaml array |
caml |
Defines an external Rust function for FFI use by an OCaml program, with automatic |
caml_body |
Defines an OCaml FFI body, including any locals, as well as a return if provided; it is up to you to define the parameters. |
caml_ffi | |
caml_local |
Initializes and registers the given identifier(s) as a local value with the OCaml runtime. |
caml_param |
Registers OCaml parameters with the GC |
list |
Create an OCaml list |
tuple |
Create an OCaml tuple |
Structs
Array |
OCaml Array type |
List |
OCaml list type |
Str |
OCaml String type |
Tuple |
OCaml Tuple type |
Enums
Error |
Error returned by |
Tag |
Tags are used to determine the type of value that is stored in an OCaml value |
Functions
named_value |
Returns a named value registered by OCaml |