diman 0.5.1

Zero-cost compile-time dimensional analysis.
Documentation
name: Rust

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

env:
  CARGO_TERM_COLOR: always

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      RUSTFLAGS: -D warnings
    steps:
      - name: Check out code
        uses: actions/checkout@v4
      - name: Install latest nightly
        uses: dtolnay/rust-toolchain@nightly
        with:
          target: nvptx64-nvidia-cuda
      - name: Install hdf5 libraries
        run: |
          sudo apt-get update
          sudo apt-get install libhdf5-dev
      - name: Install mpich libraries
        run: |
          sudo apt-get update
          sudo apt-get install mpich
      - name: Build
        run: cargo build --verbose --all-targets
      - name: Build with no_std on nvptx64-nvidia-cuda
        run: cargo build --target nvptx64-nvidia-cuda --no-default-features --features f32,f64
      - name: Run tests (default features)
        run: cargo test --tests --workspace
      - name: Run tests (all features, no rational dimensions)
        run: cargo test --tests --features glam,glam-vec2,glam-dvec2,glam-vec3,glam-dvec3,f32,f64,si,mpi,hdf5,rand,serde --workspace
      - name: Run tests (all features)
        run: cargo test --tests --all-features --workspace
      - name: Run tests (no std, no libm)
        run: cargo test --tests --no-default-features --features f32,f64,si --workspace
      - name: Run tests (no std, libm)
        run: cargo test --tests --no-default-features --features f32,f64,num-traits-libm,si --workspace
      - name: Doctests
        run: cargo test --doc --all-features --workspace

  clippy:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
    - name: Install latest nightly
      uses: dtolnay/rust-toolchain@nightly
      with:
          components: clippy
    - name: Install hdf5 libraries
      run: |
        sudo apt-get update
        sudo apt-get install libhdf5-dev
    - name: Install mpich libraries
      run: |
        sudo apt-get update
        sudo apt-get install mpich
    - name: Run clippy on all targets
      run: cargo clippy --all-targets --all-features -- -D warnings

  rustfmt:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
    - name: Install latest nightly
      uses: dtolnay/rust-toolchain@nightly
      with:
          components: rustfmt
    - name: Run rustfmt
      run: cargo fmt -- --check