rustreexo 0.6.0

A Rust implementation of Utreexo
Documentation
name: Rust CI

on:
    push:
    pull_request:

permissions: {}
env:
    CARGO_TERM_COLOR: always
    RUST_BACKTRACE: 1

jobs:
    check:
        name: Check - ${{ matrix.name }}
        runs-on: ubuntu-latest
        strategy:
            fail-fast: false
            matrix:
                include:
                    - name: Check Formatting
                      task: fmt --check
                    - name: Lint
                      task: lint
                    - name: Build Documentation
                      task: docsrs

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

            - name: Setup Build Cache
              uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

            - name: Setup cargo-rbmt
              uses: ./.github/actions/setup-rbmt

            - name: Run ${{ matrix.task }}
              run: cargo rbmt ${{ matrix.task }}

    test:
        name: Test - ${{ matrix.name }}
        runs-on: ubuntu-latest
        strategy:
            fail-fast: false
            matrix:
                include:
                    - name: Stable Toolchain + Minimal Lockfile
                      toolchain: stable
                      lockfile: minimal
                    - name: Stable Toolchain + Recent Lockfile
                      toolchain: stable
                      lockfile: recent
                    - name: MSRV Toolchain + Minimal Lockfile
                      toolchain: msrv
                      lockfile: minimal

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

            - name: Setup Build Cache
              uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

            - name: Setup cargo-rbmt
              uses: ./.github/actions/setup-rbmt

            - name: Run Tests
              run: cargo rbmt test --toolchain ${{ matrix.toolchain }} --lockfile ${{ matrix.lockfile }}

    test-no-std:
        name: Test - no-std, MSRV toolchain, Minimal Lockfile
        runs-on: ubuntu-latest
        steps:
            - name: Checkout Repository
              uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
              with:
                  persist-credentials: false

            - name: Setup Build Cache
              uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

            - name: Setup cargo-rbmt
              uses: ./.github/actions/setup-rbmt

            - name: Add no_std Target
              run: rustup target add thumbv7m-none-eabi --toolchain 1.74.0

            - name: Run no_std Tests
              run: cargo rbmt test --toolchain msrv --lockfile minimal