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 CAMLparam, CAMLlocal, and CAMLreturn inserted for you.

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

Array1

OCaml Bigarray.Array1 type

List

OCaml list type

Str

OCaml String type

Tuple

OCaml Tuple type

Enums

Error

Error returned by ocaml-rs functions

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