name: rust on: push: branches: [main] pull_request: paths: - 'rust/**' - .github/workflows/rust.yml # Allows you to run this workflow manually from the Actions tab workflow_dispatch: concurrency: group: rust-${{ github.ref }} cancel-in-progress: true env: CARGO_TERM_COLOR: always RUST_BACKTRACE: full defaults: run: working-directory: ./rust jobs: build-rs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal - uses: Swatinem/rust-cache@v1 with: working-directory: ./rust - name: Build run: cargo build --verbose test-rs: runs-on: ubuntu-latest needs: [build-rs] steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal - uses: Swatinem/rust-cache@v1 with: working-directory: ./rust - name: Run tests run: cargo test --verbose lint-rs: runs-on: ubuntu-latest needs: [build-rs] steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal components: rustfmt, clippy - uses: Swatinem/rust-cache@v1 with: working-directory: ./rust - name: Check run: cargo check --all-features --all-targets --verbose - name: Rustfmt run: cargo fmt --all -- --check - name: Clippy run: cargo clippy -- -D warnings