# Adapted from https://github.com/joshka/github-workflows/blob/main/.github/workflows/rust-check.yml # Thanks to joshka for permission to use this template! on: push: branches: - main pull_request: name: Check env: CARGO_TERM_COLOR: always concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: fmt: name: stable / fmt runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install Rust stable uses: dtolnay/rust-toolchain@stable with: components: rustfmt - name: Run cargo fmt run: cargo fmt -- --check - name: Cache Cargo dependencies uses: Swatinem/rust-cache@v2 clippy: name: ${{ matrix.toolchain }} / clippy runs-on: ubuntu-latest permissions: checks: write strategy: fail-fast: false matrix: # Get early warnings about new lints introduced in the beta channel toolchain: [stable, beta] steps: - name: Checkout uses: actions/checkout@v4 - name: Install Rust stable uses: dtolnay/rust-toolchain@stable with: components: clippy - name: Run clippy action uses: clechasseur/rs-clippy-check@v3 - name: Cache Cargo dependencies uses: Swatinem/rust-cache@v2 doc: # run docs generation on nightly rather than stable. This enables features like # https://doc.rust-lang.org/beta/unstable-book/language-features/doc-cfg.html which allows an # API be documented as only available in some specific platforms. name: nightly / doc runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Rust nightly uses: dtolnay/rust-toolchain@nightly - name: Run cargo doc run: cargo doc --no-deps --all-features env: RUSTDOCFLAGS: --cfg docsrs msrv: # check that we can build using the minimal rust version that is specified by this crate name: 1.85.0 / check runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install 1.85.0 uses: dtolnay/rust-toolchain@master with: toolchain: 1.85.0 - name: cargo +1.85.0 check run: cargo check