lockmap 0.2.1

A high-performance, thread-safe HashMap and LRU cache with fine-grained per-key locking.
Documentation
name: Rust

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

env:
  CARGO_TERM_COLOR: always

jobs:
  test:
    name: ${{ matrix.name }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: linux-x64
            os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
          - name: linux-arm64
            os: ubuntu-24.04-arm
            target: aarch64-unknown-linux-gnu
          - name: macos-arm64
            os: macos-latest
            target: aarch64-apple-darwin
          - name: windows-x64
            os: windows-latest
            target: x86_64-pc-windows-msvc
          - name: windows-arm64
            os: windows-11-arm
            target: aarch64-pc-windows-msvc
    steps:
    - uses: actions/checkout@v4

    - name: Install Rust toolchain
      uses: dtolnay/rust-toolchain@stable
      with:
        targets: ${{ matrix.target }}

    - name: Test
      run: cargo test --target ${{ matrix.target }}

  coverage:
    name: Code Coverage
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4

    - name: Install Rust toolchain
      uses: dtolnay/rust-toolchain@stable
      with:
        components: llvm-tools-preview

    - name: Install cargo-llvm-cov
      uses: taiki-e/install-action@v2
      with:
        tool: cargo-llvm-cov

    - name: Generate coverage report
      run: cargo llvm-cov --all-features --workspace --cobertura --output-path cobertura.xml

    - name: Upload coverage reports to Codecov
      uses: codecov/codecov-action@v5
      with:
        token: ${{ secrets.CODECOV_TOKEN }}
        slug: SF-Zhou/lockmap
        files: cobertura.xml
        fail_ci_if_error: true

  miri:
    name: Miri Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Miri on nightly
        uses: dtolnay/rust-toolchain@nightly
        with:
          components: miri

      - name: Run Miri tests
        run: cargo miri test lockmap::tests