atom_box 0.3.0

A safe idiomatic Rust implementation of Atomic Box using hazard pointers
Documentation
on: 
  push: 
    branches: [ master ]
  pull_request:
    branches: [ master ]

name: Continuous integration

jobs:
  check:
    name: Check
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust: [ stable, nightly ]
        features: [ --no-default-features, --all-features ]
    steps:
      - run: sudo apt install libwayland-cursor0 libxkbcommon-dev libwayland-dev
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: check
          args: ${{ matrix.features }}

  test:
    name: Test Suite
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust: [ stable, nightly ]
        features: [ --no-default-features, --all-features ]
    steps:
      - run: sudo apt install libwayland-cursor0 libxkbcommon-dev libwayland-dev
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: ${{ matrix.features }}

  fmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust: [ stable, nightly ]
    steps:
      - run: sudo apt install libwayland-cursor0 libxkbcommon-dev libwayland-dev
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          override: true
      - run: rustup component add rustfmt
      - uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust: [ stable, nightly ]
        features: [ --no-default-features, --all-features ]
    steps:
      - run: sudo apt install libwayland-cursor0 libxkbcommon-dev libwayland-dev
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          override: true
      - run: rustup component add clippy
      - uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: ${{ matrix.features }} -- -D warnings

  loom:
    name: Loom
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust: [ stable, nightly ]
    steps:
      - run: sudo apt install libwayland-cursor0 libxkbcommon-dev libwayland-dev
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          override: true
      - run: RUSTFLAGS="--cfg loom" cargo test --test concurrency_tests --release --features=bicephany

  miri:
    name: Miri
    runs-on: ubuntu-latest
    strategy:
      matrix:
        features: [ --no-default-features, --all-features ]
    steps:
      - run: sudo apt install libwayland-cursor0 libxkbcommon-dev libwayland-dev
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
      - run: rustup component add miri
      - run: RUST_BACKTRACE=1 MIRIFLAGS="-Zmiri-ignore-leaks -Zmiri-disable-isolation" cargo miri test ${{ matrix.features }}