verifiable 0.3.0

Interface for cryptographic proof of membership of a set with known members
Documentation
name: CI

on:
  push:
    branches: [main]
  pull_request:

env:
  CARGO_TERM_COLOR: always
  PRODUCTION_FEATURES: mock,builder-params
  NO_STD_PROVER_FEATURES: no-std-prover,builder-params,mock

jobs:
  fmt:
    name: Format
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: rustup component add rustfmt
      - run: cargo fmt --check

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: rustup component add clippy
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: clippy-${{ hashFiles('Cargo.lock') }}
      - run: cargo clippy --features ${{ env.PRODUCTION_FEATURES }} --tests -- -D warnings
      - run: cargo clippy --no-default-features --features ${{ env.NO_STD_PROVER_FEATURES }} --tests -- -D warnings

  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: build-${{ hashFiles('Cargo.lock') }}
      - run: cargo build --features ${{ env.PRODUCTION_FEATURES }}
      - run: cargo build --all-features

  no-std:
    name: Build no-std (wasm32)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: rustup target add wasm32-unknown-unknown
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: wasm-${{ hashFiles('Cargo.lock') }}
      - run: cargo build --target wasm32-unknown-unknown --no-default-features
      - run: cargo build --target wasm32-unknown-unknown --no-default-features --features ${{ env.NO_STD_PROVER_FEATURES }}

  test:
    name: Tests
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      # The no-std-prover run includes tests/no_std_prover.rs, which builds a
      # no_std wasm fixture and executes the prover under the wasmi interpreter.
      - run: rustup target add wasm32-unknown-unknown
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
            tests/fixtures/wasm-prover/target
          key: test-${{ hashFiles('Cargo.lock') }}
      - run: cargo test --release --features ${{ env.PRODUCTION_FEATURES }}
      - run: cargo test --release --no-default-features --features ${{ env.NO_STD_PROVER_FEATURES }}