name: Rust
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
env:
CARGO_TERM_COLOR: always
jobs:
build_and_test:
name: Build and test
runs-on: ${{ matrix.os }}
strategy:
matrix:
build: [linux, macos, windows]
include:
- build: linux
os: ubuntu-latest
- build: macos
os: macos-latest
- build: windows
os: windows-latest
steps:
- uses: actions/checkout@v6
- uses: actions/cache@v4
if: runner.os != 'macOS'
with:
path: |
~/.cargo
./target/
key: ${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- run: cargo build
- run: cargo test
- run: cargo clippy --all-features -- -D warnings