typed-session 0.9.0

Async typed session middleware
Documentation
name: CI

on:
  pull_request:
  push:

env:
  RUSTFLAGS: -Dwarnings

jobs:
  precheck_default:
    name: Check default
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        rust: [stable]

    steps:
      - uses: actions/checkout@master

      - name: Install ${{ matrix.rust }}
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          components: rustfmt, clippy
          override: true

      - name: Rust cache
        uses: Swatinem/rust-cache@v2
        with:
          key: ${{ matrix.os }}

      - name: Check
        uses: actions-rs/cargo@v1
        with:
          command:  check
          args: --all --bins --examples --lib

  precheck_all_features:
    name: Check all features
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        rust: [stable]

    steps:
      - uses: actions/checkout@master

      - name: Install ${{ matrix.rust }}
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          components: rustfmt, clippy
          override: true

      - name: Rust cache
        uses: Swatinem/rust-cache@v2
        with:
          key: ${{ matrix.os }}

      - name: Check
        uses: actions-rs/cargo@v1
        with:
          command:  check
          args: --all-features --all --benches --bins --examples --tests --lib

  check_platform_compatibility:
    needs: [precheck_default, precheck_all_features]
    name: Check platform compatibility
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macOS-latest, windows-latest]
        rust: [stable]

    steps:
      - uses: actions/checkout@master

      - name: Install ${{ matrix.rust }}
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          components: rustfmt, clippy
          override: true

      - name: Rust cache
        uses: Swatinem/rust-cache@v2
        with:
          key: ${{ matrix.os }}

      - name: Check
        uses: actions-rs/cargo@v1
        with:
          command:  check
          args: --all-features --all --benches --bins --examples --tests --lib

  detailed_tests:
    needs: [precheck_default, precheck_all_features]
    name: Check, test, doc, format and lint with all features
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest]
        rust: [1.66.0, stable, beta, nightly]

    steps:
      - uses: actions/checkout@master

      - name: Install ${{ matrix.rust }}
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          components: rustfmt, clippy
          override: true

      - name: Rust cache
        uses: Swatinem/rust-cache@v2
        with:
          key: ${{ matrix.os }}

      - name: Check
        uses: actions-rs/cargo@v1
        with:
          command:  check
          args: --all-features --all --benches --bins --examples --tests --lib

      - name: Test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --all-features --all

      - name: Docs
        uses: actions-rs/cargo@v1
        with:
          command: doc
          args: --all-features

      - name: Format
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: -- --check

      - name: Lint
        uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: --all-features --all-targets