memmap2 0.5.10

Cross-platform Rust API for memory-mapped file IO
Documentation
name: Rust

on: [push, pull_request]

env:
  CARGO_TERM_COLOR: always

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install toolchain
      uses: dtolnay/rust-toolchain@stable
      with:
        targets: x86_64-pc-windows-gnu
        components: clippy, rustfmt

    - name: Run checks
      env:
        CLIPPY_OPTS: --all-targets -- --allow clippy::len_without_is_empty --allow clippy::missing_safety_doc
      run: |
        cargo fmt --check
        cargo clippy $CLIPPY_OPTS
        cargo clippy --target x86_64-pc-windows-gnu $CLIPPY_OPTS

  test-win:
    runs-on: windows-latest
    strategy:
      matrix:
        target:
          - i686-pc-windows-gnu
          - i686-pc-windows-msvc
          - x86_64-pc-windows-gnu
          - x86_64-pc-windows-msvc
    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install toolchain
      uses: dtolnay/rust-toolchain@master
      with:
        toolchain: stable-${{ matrix.target }}

    - name: Run tests
      run: cargo test --all-features

  test-macos:
    runs-on: macos-latest
    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install toolchain
      uses: dtolnay/rust-toolchain@stable

    - name: Run tests
      run: cargo test --all-features

  test-linux:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        target:
          - i686-unknown-linux-gnu
          - x86_64-unknown-linux-gnu
    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install toolchain
      uses: dtolnay/rust-toolchain@master
      with:
        toolchain: stable-${{ matrix.target }}

    - name: Install multilib
      if: ${{ matrix.target == 'i686-unknown-linux-gnu' }}
      run: sudo apt install gcc-multilib

    - name: Run tests
      run: cargo test --all-features

  check-stub:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install toolchain
      uses: dtolnay/rust-toolchain@stable
      with:
        targets: wasm32-unknown-unknown

    - name: Run check
      run: cargo check --all-features --target wasm32-unknown-unknown

  test-msrv:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install toolchain
      uses: dtolnay/rust-toolchain@1.36.0

    - name: Run tests
      run: cargo test --all-features