on:
pull_request:
push:
jobs:
test:
name: for rust ${{matrix.rust-version}}
strategy:
fail-fast: true
matrix:
rust-version: [1.75.0, 1.86.0]
runs-on: ubuntu-24.04
env:
TOOLCHAIN_RUST_VERSION: ${{matrix.rust-version}}
steps:
- name: Install toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{matrix.rust-version}}
components: rustfmt, clippy
- name: Checkout repository
uses: actions/checkout@v4
- name: Cargo cache
uses: Swatinem/rust-cache@v2
with:
key: ${{matrix.rust-version}}
- name: Replace Cargo.lock for a specific version
run: |
if [ -f Cargo.lock-${TOOLCHAIN_RUST_VERSION} ]; then
cp -v Cargo.lock-${TOOLCHAIN_RUST_VERSION} Cargo.lock
fi
- name: Check Format
run: cargo +${{matrix.rust-version}} fmt --all --check
- name: Clippy
uses: actions-rs-plus/clippy-check@v2.3.0
env:
RUSTUP_TOOLCHAIN: ${{matrix.rust-version}}
with:
toolchain: ${{matrix.rust-version}}
args: --all-features --all-targets
- name: Build
run: cargo +${{matrix.rust-version}} build
- name: Test with default features
run: cargo +${{matrix.rust-version}} test
- name: Test with no features
run: cargo +${{matrix.rust-version}} test --no-default-features
- name: Test with all features
run: cargo +${{matrix.rust-version}} test --all-features
- name: Test with async-tokio feature
run: cargo +${{matrix.rust-version}} test --features async-tokio
- name: Test with async-smol feature
run: cargo +${{matrix.rust-version}} test --features async-smol