disrustor 0.4.0

This project is a port of the LMAX Disruptor to Rust
Documentation
on:
  push:
    branches: [main, master]
  pull_request:

name: ci

jobs:
  required:
    runs-on: ubuntu-latest
    name: ubuntu-latest / ${{ matrix.toolchain }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - toolchain: stable
            try-build: overwrite # wip
          - toolchain: beta
            try-build: overwrite
          - toolchain: nightly
            try-build: overwrite
          - toolchain: 1.59.0 # MSRV
            try-build: overwrite
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.toolchain }}
          override: true
      - name: cargo test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --locked --all-features --all-targets
        env:
          TRYBUILD: ${{ matrix.try-build }}

  os-check:
    runs-on: ${{ matrix.os }}
    name: ${{ matrix.os }} / stable
    strategy:
      fail-fast: false
      matrix:
        os:
          - macos-latest
          - windows-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          override: true
      - name: cargo test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --locked --all-features --all-targets
        env:
          TRYBUILD: overwrite

  coverage:
    runs-on: ubuntu-latest
    name: ubuntu-latest / stable / coverage
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          override: true
          components: llvm-tools-preview
      - name: cargo install cargo-llvm-cov
        uses: taiki-e/install-action@cargo-llvm-cov
      - name: cargo llvm-cov
        uses: actions-rs/cargo@v1
        with:
          command: llvm-cov
          args: --locked --all-features --lcov --output-path lcov.info
        env:
          TRYBUILD: overwrite
      - name: codecov.io
        uses: codecov/codecov-action@v3
        with:
          fail_ci_if_error: true