ocaml 1.3.0

OCaml bindings for Rust
Documentation
name: Rust tests

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]
  workflow_dispatch:

jobs:
  run:
    name: Build
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [macos-latest, ubuntu-latest]
        ocaml-compiler:
          [
            "5.4.0",
            "5.3.0",
            "5.2.0",
            "5.1.1",
            "5.0.0",
            "4.14.1",
            "4.13.1",
            "4.12.1",
            #"4.11.2",
            "4.10.2",
          ]

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: OCaml/Opam cache
        id: ocaml-rs-opam-cache
        uses: actions/cache@v3
        with:
          path: "~/.opam"
          key: ocaml-rs-opam-${{ matrix.ocaml-compiler }}-${{ matrix.os }}

      - name: Use OCaml ${{ matrix.ocaml-compiler }}
        uses: ocaml/setup-ocaml@v3
        with:
          ocaml-compiler: ${{ matrix.ocaml-compiler }}

      - if: matrix.os == 'macos-latest'
        run: brew install zstd
      - if: matrix.os == 'ubuntu-latest'
        run: sudo apt install libzstd-dev

      - name: Install mdbook
        uses: baptiste0928/cargo-install@v2
        with:
          crate: mdbook

      - name: Build
        run: opam exec -- cargo build --example rust --features=link

      - name: Build build
        run: opam exec -- cargo build --package ocaml-build --features=dune

      - name: Run Rust tests
        run: opam exec -- cargo run --example rust --features=link

      - name: Check mdbook
        run: mdbook test doc -L ./target/debug/deps

      - name: Test `no_std`
        run: opam exec -- cargo build --features=no-std