name: Rust CI checks on: push: pull_request: env: CARGO_TERM_COLOR: always # Make sure CI fails on all warnings, including Clippy lints RUSTFLAGS: "-Dwarnings" jobs: lint: name: Run lint checks runs-on: ubuntu-latest strategy: matrix: feature: - actix4,warp,axum - actix3 steps: - uses: actions/checkout@v2 - name: Install Rust stable toolchain uses: dtolnay/rust-toolchain@master with: toolchain: stable components: rustfmt, clippy - name: Run formatting run: cargo fmt --all --check - name: Run Clippy run: cargo clippy --all-targets -F "${{ matrix.feature }}" test: name: Run tests runs-on: ubuntu-latest strategy: matrix: # NOTE: this crate's MSRC if 1.63 # However, many of the web frameworks that # this provides support for have greater/missing MSRVs. # We attempt to test the MSRV here if it is known. rust: - stable - 1.63.0 feature: - "" - actix4 - actix3 - warp - axum # test frameworks for specific MSRVs (where known) include: # axum 0.8 has a MSRV of 1.75.0 - rust: 1.75.0 feature: axum # exclude frameworks that have a different/unknown MSRV exclude: - rust: 1.63.0 feature: axum # actix does not seem to actually adhere # to its MSRV -- it states 1.75 but has a dependency `zerofrom` # that requires Rust 1.81. We'll punt on testing it - rust: 1.63.0 feature: actix4 - rust: 1.63.0 feature: actix3 # warp does not list an MSRV # see: https://github.com/seanmonstar/warp/issues/1077 - rust: 1.63.0 feature: warp steps: - uses: actions/checkout@v4 - name: Install Rust stable toolchain uses: dtolnay/rust-toolchain@stable with: toolchain: ${{ matrix.rust }} - name: Run test ${{ matrix.feature }} run: | cargo test --all-targets --features "${{ matrix.feature }}" cargo test --doc --features "${{ matrix.feature }}"