async-select 0.3.0

`select!` multiplex asynchronous futures simultaneously
Documentation
name: CI
on:
  push:
  pull_request:

env:
  RUSTFLAGS: -Dwarnings
  RUST_BACKTRACE: full

jobs:
  fmt:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: Swatinem/rust-cache@v2
    - name: Install latest nightly
      uses: actions-rs/toolchain@v1
      with:
          toolchain: nightly
          override: true
          components: rustfmt
    - name: Check formatting
      run: cargo fmt --all -- --check
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: Swatinem/rust-cache@v2
    - name: Install rust stable
      uses: actions-rs/toolchain@v1
      with:
          toolchain: stable
          override: true
    - name: Install cargo-feature-combinations
      run: cargo install cargo-feature-combinations
    - name: Build code
      run: cargo fc build
  test:
    needs: [build]
    runs-on: ubuntu-latest
    env:
      RUST_LOG: debug
    steps:
    - uses: actions/checkout@v2
    - uses: Swatinem/rust-cache@v2
    - name: Install rust stable
      uses: actions-rs/toolchain@v1
      with:
          toolchain: stable
          override: true
    - name: Install cargo-feature-combinations
      run: cargo install cargo-feature-combinations
    - name: Test code
      run: cargo fc --fail-fast test -- --nocapture
  coverage:
    if: github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref_type == 'branch' && (github.ref_name == 'master' || github.ref_name == 'coverage'))
    needs: [test]
    runs-on: ubuntu-latest
    env:
      RUST_LOG: debug
      RUSTFLAGS: -Cinstrument-coverage
    steps:
    - uses: actions/checkout@v2
    - uses: Swatinem/rust-cache@v2
    - name: Install latest nightly
      uses: actions-rs/toolchain@v1
      with:
          toolchain: nightly
          override: true
          components: llvm-tools-preview
    - run: cargo install grcov
    - name: Install cargo-feature-combinations
      run: cargo install cargo-feature-combinations
    - run: cargo build --all-features --verbose
    - name: Run tests
      run: LLVM_PROFILE_FILE="async-select-%p-%m.profraw" cargo fc --fail-fast test --verbose -- --nocapture
    - name: Generate coverage report
      run: grcov $(find . -name "async-select-*.profraw" -print) --binary-path ./target/debug/ -s . -t lcov --branch --ignore-not-existing --ignore "/*" -o lcov.info
    - name: Upload to codecov.io
      uses: codecov/codecov-action@v2
      with:
        token: ${{ secrets.CODECOV_TOKEN }}
        verbose: true
  lint:
    needs: [build]
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: Swatinem/rust-cache@v2
    - name: Install rust stable
      uses: actions-rs/toolchain@v1
      with:
          toolchain: stable
          override: true
          components: clippy
    - name: Lint code
      run: cargo clippy --all-features --no-deps -- -D clippy::all
  release:
    if: github.event_name == 'push' && github.ref_type == 'tag'
    needs: [build, test, lint]
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: Swatinem/rust-cache@v2
    - name: install cargo-workspaces to publish workspace
      run: cargo install cargo-workspaces
    - name: publish crate
      env:
        CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
      run: cargo workspaces publish --allow-dirty --from-git