categories 0.1.0

Category theory 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@nightly
        with:
          components: rustfmt

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

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

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

      - 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:
    name: check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

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

      - 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@nightly
  #       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@nightly

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

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

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

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

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

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

      - name: Run cargo-udeps
        run: cargo udeps --workspace