derivative 2.2.0

A set of alternative `derive` attributes for Rust
Documentation
on: [push, pull_request]

name: Continuous integration

jobs:
  check:
    name: Check
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - 1.34.0
          - stable
          - beta
          - nightly
    steps:
      - 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

  test:
    name: Test Suite
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os:
          - ubuntu-18.04
          - macos-latest
          - windows-latest
        rust:
          - 1.34.0
          - stable
          - beta
          - nightly
        features:
          - ''
          - 'use_core'
        extra_args:
          - ''
        include:
          # The compiler output isn't stable from one version to another of rustc, so we only
          # test that on one version
          - os: ubuntu-18.04
            rust: 1.34.0
            features: ''
            extra_args: ''
          - os: ubuntu-18.04
            rust: 1.34.0
            features: ''
            extra_args:  'compile_test -- --ignored'
          - os: ubuntu-18.04
            rust: 1.34.0
            features: 'use_core'
            extra_args: ''
          - os: ubuntu-18.04
            rust: 1.34.0
            features: 'use_core'
            extra_args: 'compile_test -- --ignored'
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          override: true
      - uses: actions-rs/cargo@v1
        env:
          RUST_BACKTRACE: 1
        with:
          command: test
          args: --features=${{ matrix.features }} ${{ matrix.extra_args }}
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
      - run: cargo +stable install mdbook --no-default-features --features search --vers "^0.4.0"
      - run: mdbook build
      - run: mdbook test -L ./target/debug/deps/
        if: ${{ matrix.features }} != 'use_core'

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - 1.34.0
          - stable
        features:
          - ''
          - 'use_core'
    steps:
      - 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: --all-targets --features=${{ matrix.features }} -- -D warnings