rend 0.5.3

Cross-platform, endian-aware primitives for Rust
Documentation
name: CI

on:
  push:
  pull_request:
  workflow_dispatch:
  schedule:
    - cron: "0 10 * * *"

permissions:
  contents: read

env:
  RUSTFLAGS: -Dwarnings

jobs:
  features:
    name: Features / ${{ matrix.std }} ${{ matrix.derive }}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        external:
          - ''
          - bytecheck bytemuck-1 zerocopy-0_8

    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo test --verbose --tests --no-default-features --features "${{ matrix.external }}"

  toolchain:
    name: Toolchain / ${{ matrix.toolchain }} ${{ matrix.opt }}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        toolchain:
          - stable
          - beta
          - nightly
        opt:
          - ''
          - --release

    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.toolchain }}
      - run: cargo test --verbose ${{ matrix.opt }}

  miri:
    name: Miri / ${{ matrix.opt }}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        opt:
          - ''
          - --release

    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@miri
      - run: cargo miri setup
      - run: cargo miri test ${{ matrix.opt }} --verbose
        env:
          MIRIFLAGS: -Zmiri-disable-stacked-borrows -Zmiri-tree-borrows

  test:
    name: Test / ${{ matrix.target }} ${{ matrix.opt }}
    runs-on: ${{ matrix.os }}

    strategy:
      fail-fast: false
      matrix:
        opt:
          - ''
          - --release
        include:
          - os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
          - os: macos-latest
            target: aarch64-apple-darwin
          - os: windows-latest
            target: x86_64-pc-windows-msvc

    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo test ${{ matrix.opt }}

  cross:
    name: Cross / ${{ matrix.target }}
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        target:
          - i686-unknown-linux-gnu
          - i586-unknown-linux-gnu
          - armv7-unknown-linux-gnueabihf
          - aarch64-unknown-linux-gnu
          - thumbv6m-none-eabi

    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo install cross
      - run: cross build --no-default-features --features "bytecheck bytemuck-1 zerocopy-0_8" --target ${{ matrix.target }} --verbose

  format:
    name: Format
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: rustfmt
      - run: cargo fmt --check

  clippy:
    name: Clippy
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: clippy
      - run: cargo clippy

  doc:
    name: Doc
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@nightly
      - run: cargo doc