Macro ocaml_interop::impl_from_ocaml_record[][src]

macro_rules! impl_from_ocaml_record {
    ($ocaml_typ : ident => $rust_typ : ident
 { $($field : ident : $ocaml_field_typ : ty), + $(,) ? }) => { ... };
    ($both_typ : ident { $($t : tt) * }) => { ... };
    ($ocaml_typ : ident => $rust_typ :
 ident($($field : ident : $ocaml_field_typ : ty), + $(,) ?)) => { ... };
    ($both_typ : ident($($t : tt) *)) => { ... };
}
Expand description

Implements FromOCaml for mapping an OCaml record into a Rust record.

It is important that the order of the fields remains the same as in the OCaml type declaration.

Examples

struct MyStruct {
    int_field: i64,
    string_field: String,
}

// Assuming an OCaml record declaration like:
//
//      type my_struct = {
//          int_field: int;
//          string_field: string;
//      }
//
// NOTE: What is important is the order of the fields, not their names.

impl_from_ocaml_record! {
    // Optionally, if Rust and OCaml types don't match:
    // OCamlType => RustType { ... }
    MyStruct {
        int_field: OCamlInt,
        string_field: String,
    }
}