mesocarp 0.5.5

High-performance concurrency, synchronization, scheduling, and logging primitives in Rust
Documentation
name: Rust
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

env:
  CARGO_TERM_COLOR: always

jobs:
  rust-fmt:
    name: rustfmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt

      - name: Rust Cache
        uses: Swatinem/rust-cache@v2
        with:
          key: rust/rustfmt

      - name: Run Rust fmt
        run: cargo fmt --all -- --check

  check:
    name: check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Rust Cache
        uses: Swatinem/rust-cache@v2
        with:
          key: rust/check

      - name: Run cargo check
        run: cargo check --workspace

  clippy:
    name: clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy

      - name: Rust Cache
        uses: Swatinem/rust-cache@v2
        with:
          key: rust/clippy

      - name: Build
        run: cargo build --workspace

      - name: Clippy
        run: cargo clippy --all-targets --all-features -- --deny warnings

  test:
    name: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Rust Cache
        uses: Swatinem/rust-cache@v2
        with:
          key: rust/test

      - name: Run tests
        run: cargo test --verbose --workspace

  toml-fmt:
    name: taplo
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Install taplo
        uses: taiki-e/install-action@cargo-binstall
        with:
          tool: taplo-cli

      - name: Rust Cache
        uses: Swatinem/rust-cache@v2
        with:
          key: rust/taplo

      - name: Run TOML fmt
        run: taplo fmt --check

  check-wasm:
    name: check-wasm
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable

      - name: Rust Cache
        uses: Swatinem/rust-cache@v2
        with:
          key: rust/check-wasm

      - name: Install WASM target
        run: rustup target add wasm32-unknown-unknown

      - name: Run cargo check for WASM
        run: cargo check --workspace --target wasm32-unknown-unknown

  # semver:
  #   name: semver
  #   runs-on: ubuntu-latest
  #   continue-on-error: true
  #   steps:
  #     - uses: actions/checkout@v4
  #       with:
  #         fetch-depth: 0

  #     - name: Install Rust
  #       uses: dtolnay/rust-toolchain@master
  #       with:
  #         toolchain: nightly-2025-05-25

  #     - name: Rust Cache
  #       uses: Swatinem/rust-cache@v2
  #       with:
  #         key: rust/semver

  #     - name: Install cargo-semver-checks
  #       uses: taiki-e/install-action@cargo-binstall
  #       with:
  #         tool: cargo-semver-checks

  #     - name: Check semver
  #       run: cargo semver-checks check-release