name: Rust CI on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest strategy: matrix: rust: ["1.61.0", stable, beta, nightly] steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@v1 with: toolchain: ${{ matrix.rust }} - name: Cache Cargo Dependencies uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Install MSRV Cargo.lock if: ${{ matrix.rust == '1.61.0' }} run: mv Cargo.lock.msrv Cargo.lock - name: build run: cargo build -v - name: test if: ${{ matrix.rust != '1.61.0' }} run: cargo test -v && cargo doc -v rustfmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@stable with: components: rustfmt - name: Run rustfmt check run: cargo fmt -- --check clippy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: dtolnay/rust-toolchain@stable with: components: clippy - run: cargo clippy --all-features # TODO: enable "-- -D warnings" once all outstanding clippy lints are fixed verify_msrv: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install or use cached `cargo-msrv` uses: baptiste0928/cargo-install@v1 with: crate: cargo-msrv - name: Install MSRV Cargo.lock run: mv Cargo.lock.msrv Cargo.lock - name: Verify Minimum Rust Version run: cargo-msrv verify