name: CI
on:
push:
pull_request:
permissions:
contents: read
jobs:
quality:
name: Quality
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Install stable Rust
run: rustup toolchain install stable --profile minimal --component clippy,rustfmt
- name: Check formatting
run: cargo +stable fmt --all -- --check
- name: Run Clippy
run: cargo +stable clippy --all-targets --all-features -- -D warnings
- name: Run tests
run: cargo +stable test --all-features --locked
- name: Build documentation
env:
RUSTDOCFLAGS: -D warnings
run: cargo +stable doc --no-deps --all-features --locked
- name: Compile benchmarks
run: cargo +stable bench --all-features --locked --no-run
msrv:
name: MSRV (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v7
- name: Install Rust 1.88
run: rustup toolchain install 1.88.0 --profile minimal
- name: Check all targets
run: cargo +1.88.0 check --all-targets --locked
coverage:
name: Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Install stable Rust
run: rustup toolchain install stable --profile minimal
- name: Install cargo-tarpaulin
run: cargo install cargo-tarpaulin --locked
- name: Check test coverage
run: cargo tarpaulin --workspace --all-features --timeout 120 --fail-under 85