name: Rust
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
env:
CARGO_TERM_COLOR: always
jobs:
rustfmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- name: Install `rustup`
run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal
- name: Install the latest stable Rust
run: rustup toolchain install stable --component rustfmt && rustup default stable
- uses: actions/checkout@v4
- run: cargo fmt --all -- --check
doc:
runs-on: ubuntu-latest
steps:
- name: Install `rustup`
run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal
- name: Install the latest stable Rust
run: rustup toolchain install stable && rustup default stable
- uses: actions/checkout@v4
- run: cargo doc --no-deps --all-features
test:
strategy:
matrix:
rust: ["stable", "beta", "nightly", "1.91.0"]
runs-on: ubuntu-latest
steps:
- name: Install `rustup`
run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal
- name: Install Rust channel
run: rustup toolchain install ${{matrix.rust}} && rustup default ${{matrix.rust}}
- uses: actions/checkout@v4
- run: cargo test --verbose
- run: cargo test --verbose --features alloc
- run: cargo test --verbose --features std
- run: cargo test --verbose --features check
- run: cargo test --verbose --features derive
- run: cargo test --verbose --all-features
miri:
runs-on: ubuntu-latest
env:
MIRIFLAGS: "-Zmiri-strict-provenance"
steps:
- name: Install `rustup`
run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain nightly -y
- name: Install MIRI
run: rustup toolchain install nightly --allow-downgrade --profile minimal --component miri
- uses: actions/checkout@v4
- run: cargo +nightly miri test --all-features