rustreexo 0.5.0

A Rust implementation of Utreexo
Documentation
name: Rust

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always

on: [push, pull_request]

jobs:
  check:
    runs-on: ubuntu-latest
    permissions:
      contents: read

    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Install nightly Rust toolchain
        run: rustup toolchain install nightly --component clippy,rustfmt --no-self-update

      - name: Setup just
        uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff # v3

      - name: Run just check
        run: just check

  test-msrv:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Install MSRV Rust toolchain (1.74.0)
        run: rustup toolchain install 1.74.0 --no-self-update

      - name: Setup just
        uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff # v3

      - name: Run MSRV tests
        run: just test-msrv

  cross-testing:
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        toolchain: [nightly, stable]

    runs-on: ${{ matrix.os }}
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      - name: Install Rust toolchain
        run: rustup toolchain install ${{ matrix.toolchain }} --component rustfmt,clippy --no-self-update

      - name: Show Rust toolchain
        run: rustc +${{ matrix.toolchain }} -Vv

      - name: Setup just
        uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff # v3

      - name: Run Tests
        run: just test-${{ matrix.toolchain }}

  no-std:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        with:
          persist-credentials: false

      # Common bare-metal Cortex-M target (no_std: `core` + `alloc`)
      - name: Install MSRV Rust toolchain
        run: |
          rustup toolchain install 1.74.0 --no-self-update
          rustup target add thumbv7em-none-eabi --toolchain 1.74.0

      - name: Build for no_std target
        shell: bash
        run: |
          cargo +1.74.0 build --lib --target thumbv7em-none-eabi --no-default-features