on: push: branches: - master - staging - trying pull_request: name: Continuous integration jobs: tests: name: Rust project runs-on: ubuntu-latest strategy: matrix: rust: - "1.74" # Current minimum for experimental features - stable - beta - nightly steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@v1 with: toolchain: ${{ matrix.rust }} components: rustfmt, clippy # Make sure we test with recent deps - run: cargo update # Note: some crates broke BC with 1.74 so we use the locked deps if: "${{ matrix.rust != '1.74' }}" - run: cargo build --all-features --all-targets - run: cargo test --all-features - run: cargo fmt --all -- --check # Note: Rust 1.74 doesn't understand edition 2024 formatting so no point if: "${{ matrix.rust != '1.74' }}" - run: cargo clippy --all-features --all-targets -- -D warnings msrv: name: MSRV runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@v1 with: toolchain: "1.70" # Test everything except experimental features. - run: cargo test --features backtraces,lock_api,parking_lot docs: name: Documentation build runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@v1 with: toolchain: nightly - name: Build documentation env: # Build the docs like docs.rs builds it RUSTDOCFLAGS: --cfg docsrs run: cargo doc --all-features