blazemap 0.5.1

Implements a vector-based slab-like map with an interface similar to that of HashMap, and also provides tools for generating lightweight identifiers that can be type-safely used as keys for this map.
Documentation
name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

env:
  CARGO_TERM_COLOR: always
  RUSTFLAGS: -Dwarnings
  RUST_BACKTRACE: 1
  RUST_LOG: blazemap

jobs:
  fmt:
    name: "Fmt"
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: rustup show active-toolchain -v
      - run: rustup component add rustfmt
      - run: cargo fmt --version
      - run: cargo fmt -- --check

  build:
    name: "Build"
    needs: fmt
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
      - name: Build project
        run: cargo build --all-targets --features full

  docs:
    name: "Docs"
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
      - name: Build Documentation
        run: cargo doc --all --no-deps --release

  clippy:
    name: "Clippy"
    needs: fmt
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
      - name: Add clippy
        run: rustup component add clippy
      - name: Clippy version
        run: cargo clippy --version
      - name: Run clippy
        run: cargo clippy
      - name: Run clippy with all features
        run: cargo clippy --all-targets --features full
      - name: Run clippy on tests
        run: cargo clippy --tests --all-targets --features full

  tests:
    name: "Tests"
    needs: [build, clippy]
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
      - name: Run tests
        run: cargo test
      - name: Run tests with all features
        run: cargo test --features full
      - name: Run tests with all features in release mode
        run: cargo test --features full --release

  loom:
    name: "Loom"
    needs: [build, clippy]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: rustup show active-toolchain -v
      - run: ./tests/loom.sh

  miri:
    name: "Miri"
    needs: [build, clippy]
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
      - name: Install Miri
        run: |
          rustup toolchain install nightly --component miri
          rustup override set nightly
          cargo miri setup
          cargo install cargo-binstall
          cargo binstall cargo-nextest --no-confirm --secure
      - name: Run tests with Miri
        run: cargo miri nextest run --features full --test-threads 4