ruint 1.7.0

Unsigned integer type with cont-generic bit length
Documentation
name: CI

on: [push, pull_request]

env:
  CARGO_TERM_COLOR: always
  # Skip incremental build and debug info generation in CI
  CARGO_INCREMENTAL: 0
  CARGO_PROFILE_DEV_DEBUG: 0

jobs:
  accept:
    name: Accept
    runs-on: ubuntu-latest
    needs: [lint, test]
    steps:
      - name: Accept
        run: true

  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
          components: rustfmt, clippy
      - name: Cache build
        uses: Swatinem/rust-cache@v1
        with:
          key: cache-v1
      - name: Check formatting
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check
      - uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          args: --locked --workspace --all-features --all-targets
      - name: Check docs
        uses: actions-rs/cargo@v1
        with:
          command: doc
          args: --locked --workspace --all-features --no-deps --document-private-items

  test:
    name: Test
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - stable
          - nightly
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          override: true
      - name: Cache build
        uses: Swatinem/rust-cache@v1
        with:
          key: cache-v1
      - run:  npm install ganache-cli@latest --global
      # Cargo doc test is not included in `--all-targets` so we call it separately.
      # See <https://github.com/rust-lang/cargo/issues/6669>
      # Cargo doc test also doesn't support `--no-run`, so we run it but
      # have it just print `--help`.
      - name: Build tests
        run: |
          cargo test --locked --workspace --all-features --all-targets --no-run
          cargo test --locked --workspace --all-features --doc -- --help
      - name: Run tests
        run: |
          cargo test --locked --workspace --all-features --all-targets -- --nocapture
          cargo test --locked --workspace --all-features --doc -- --nocapture

  codecov:
    # See <https://doc.rust-lang.org/nightly/unstable-book/compiler-flags/source-based-code-coverage.html>
    name: Coverage
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install rust
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          override: true
          components: llvm-tools-preview
      - name: Cache build
        uses: Swatinem/rust-cache@v1
        with:
          key: cache-v1
      - name: Install cargo-llvm-cov
        uses: taiki-e/install-action@cargo-llvm-cov
      - name: Build with code coverage
        run: |
          cargo llvm-cov --no-report --locked --workspace --all-features --all-targets -- --help
          cargo llvm-cov --no-report --locked --workspace --all-features --doc -- --help
      - name: Generate code coverage
        env:
          # Covered tests are slower, so reduce the test load. (We also shouldn't
          # depend too much on case generation for coverage).
          PROPTEST_CASES: 5
        run: |
          # Generate profiles, but do not merge them
          cargo llvm-cov --no-report --locked --workspace --all-features --all-targets -- --nocapture
          cargo llvm-cov --no-report --locked --workspace --all-features --doc -- --nocapture
      - name: Merge profiles
        run: cargo llvm-cov --no-run --lcov --output-path lcov.info
      - name: Submit to codecov.io
        uses: codecov/codecov-action@v3.1.1
        with:
          token: ${{ secrets.CODECOV_TOKEN }} # Optional for public repos
          files: lcov.info
          fail_ci_if_error: true
          verbose: true

  security_audit:
    name: Dependency Security Audit
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up Rust
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          default: true
      - uses: actions-rs/audit-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}