name: Rust on: push: branches: - main pull_request: workflow_dispatch: env: CARGO_TERM_COLOR: always jobs: build: strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] rust: [stable, nightly] name: ${{ matrix.rust }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v3 - name: Setup Rust toolchain id: rust-toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.rust }} override: true components: rustfmt, clippy - name: Cache uses: actions/cache@v3 id: cache with: path: | ~/.cargo/registry/cache/ target/ key: build-${{ runner.os }}-${{ matrix.rust }}-rust-${{ steps.rust-toolchain.outputs.rustc_hash }}-${{ hashFiles('**/Cargo.lock') }} - name: cargo build uses: actions-rs/cargo@v1 with: command: build - name: cargo clippy uses: actions-rs/cargo@v1 with: command: clippy args: -D warnings test: strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] rust: [stable, nightly] name: ${{ matrix.rust }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v3 - name: Setup Rust toolchain id: rust-toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.rust }} override: true components: rustfmt, clippy - name: Cache uses: actions/cache@v3 id: cache with: path: | ~/.cargo/registry/cache/ target/ key: test-${{ runner.os }}-${{ matrix.rust }}-rust-${{ steps.rust-toolchain.outputs.rustc_hash }}-${{ hashFiles('**/Cargo.lock') }} - name: cargo test uses: actions-rs/cargo@v1 with: command: test args: --all-features