packed_ptr 0.1.2

A configurable & generic tagged pointer implementation in Rust
Documentation
name: CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

env:
  CARGO_TERM_COLOR: always
  RUSTFLAGS: -Dwarnings

jobs:
  test:
    strategy:
      fail-fast: false
      matrix:
        os:
          - ubuntu-latest
          - macos-latest
          - windows-latest

    runs-on: ${{ matrix.os }}
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@stable
    - uses: taiki-e/install-action@cargo-hack
    - name: Run tests
      run: cargo hack test --feature-powerset

  build-linux:
    strategy:
      fail-fast: false
      matrix:
        target:
          - aarch64-unknown-linux-gnu
          - i686-unknown-linux-gnu
          - x86_64-unknown-linux-gnu
          - riscv64gc-unknown-linux-gnu
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@stable
      with:
        target: ${{ matrix.target }}
    - uses: taiki-e/install-action@cargo-hack
    - name: Build
      run: cargo hack build --feature-powerset --target ${{ matrix.target }}

  build-macos:
    strategy:
      fail-fast: false
      matrix:
        target:
          - x86_64-apple-darwin
          - aarch64-apple-darwin
    runs-on: macos-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@stable
      with:
        target: ${{ matrix.target }}
    - uses: taiki-e/install-action@cargo-hack
    - name: Build
      run: cargo hack build --feature-powerset --target ${{ matrix.target }}

  build-windows:
    strategy:
      fail-fast: false
      matrix:
        target:
          - i686-pc-windows-msvc
          - x86_64-pc-windows-msvc
          - aarch64-pc-windows-msvc
          - i686-pc-windows-gnu
          - x86_64-pc-windows-gnu
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@stable
      with:
        target: ${{ matrix.target }}
    - uses: taiki-e/install-action@cargo-hack
    - name: Build
      run: cargo hack build --feature-powerset --target ${{ matrix.target }}

  miri:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: miri
    - uses: taiki-e/install-action@cargo-hack
    - name: Run miri
      run: cargo hack miri test --feature-powerset
      env:
        MIRIFLAGS: -Zmiri-permissive-provenance -Zmiri-symbolic-alignment-check

  clippy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@stable
      with:
        components: clippy
    - uses: taiki-e/install-action@cargo-hack
    - name: Run clippy
      run: cargo hack clippy --feature-powerset

  rustfmt:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@nightly
      with:
        components: rustfmt
    - name: Run rustfmt
      run: cargo fmt --all --check