coitrees 0.4.0

A very fast data structure for overlap queries on sets of intervals.
Documentation
name: CI

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

jobs:
  Formatting:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true
          components: rustfmt

      - name: Check format
        run: cargo fmt -- --check

  Linting:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true
          components: clippy

      - name: Lint with clippy
        uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

  Testing:
    needs: Formatting
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        build: [beta, stable, windows, macos]
        include:
          - build: macos
            os: macos-latest
            rust: stable
          - build: windows
            os: windows-latest
            rust: stable
          - build: beta
            os: ubuntu-latest
            rust: beta
          - build: stable
            os: ubuntu-latest
            rust: stable
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          override: true

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

      - name: Run tests
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --all --no-fail-fast

  MSRV:
    needs: Formatting
    runs-on: ubuntu-latest
    env:
      MSRV_VERSION: 1.62.0
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Install MSRV toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ env.MSRV_VERSION }}
          override: true

      - name: check if README matches MSRV defined here
        run: grep $MSRV_VERSION README.md

      - name: pin dependency versions for MSRV
        run: |
          cargo update -p indexmap --precise 1.8.2

      - name: Run tests
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --all --no-fail-fast

  Coverage:
    needs: Formatting
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Install nightly toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: nightly
          override: true

      - name: Install and run cargo-tarpaulin
        uses: actions-rs/tarpaulin@v0.1
        with:
          version: "0.26.0"
          args: "--workspace --all-features --run-types Tests,Doctests --out Lcov --timeout 300"

      - name: Upload coverage
        uses: coverallsapp/github-action@v1
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path-to-lcov: ./lcov.info