reckoner 0.3.0

A high level arbitrary precision arithmetic library supporting integer and rational numbers.
Documentation
name: Rust CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - "*"

jobs:
  test:
    strategy:
      fail-fast: false
      matrix:
        rust:
          - stable
          - beta
          - nightly
          - 1.70.0
        os:
          - ubuntu-latest
          - windows-latest
          - macos-latest
        clang:
          - 14.0
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout source
        uses: actions/checkout@v4
        with:
          submodules: recursive
      # LLVM and Clang installation
      # https://github.com/KyleMayes/clang-sys/blob/a0bcae1a9d7ab6ed8de010b0f5e2b2020c20d204/.github/workflows/ci.yml#L23-L35
      # The clang and clang-sys crates' CI has example of installing LLVM and Clang
      # along with how to update the environment variables (see Build & Test) so
      # that bindgen can find libclang and depedencies
      - name: Cache LLVM and Clang
        id: cache-llvm
        uses: actions/cache@v4
        with:
          path: ${{ runner.temp }}/llvm-${{ matrix.clang }}
          key: ${{ matrix.os }}-llvm-${{ matrix.clang }}
      - name: Install LLVM and Clang
        uses: KyleMayes/install-llvm-action@v2
        with:
          version: ${{ matrix.clang }}
          directory: ${{ runner.temp }}/llvm-${{ matrix.clang }}
          cached: ${{ steps.cache-llvm.outputs.cache-hit }}
      # Rust
      - name: Install ${{ matrix.rust }} toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{matrix.rust}}
      - name: Build
        run: cargo build --all
        env:
          LIBCLANG_PATH: ${{ runner.temp }}/llvm-${{ matrix.clang }}/lib
          LLVM_CONFIG_PATH: ${{ runner.temp }}/llvm-${{ matrix.clang }}/bin/llvm-config
      - name: Test
        run: cargo test --all
        env:
          LIBCLANG_PATH: ${{ runner.temp }}/llvm-${{ matrix.clang }}/lib
          LLVM_CONFIG_PATH: ${{ runner.temp }}/llvm-${{ matrix.clang }}/bin/llvm-config
  lint:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout source
        uses: actions/checkout@v4
        with:
          submodules: recursive
      - name: Install nightly toolchain
        uses: dtolnay/rust-toolchain@nightly
        with:
          components: rustfmt clippy
      - name: Check format
        run: cargo fmt --all --check
      - name: Lint
        run: cargo clippy