tracing-mutex 0.3.2

Ensure deadlock-free mutexes by allocating in order, or else.
Documentation
on:
  push:
    branches:
      - master
      - staging
      - trying
  pull_request:

name: Continuous integration

jobs:
  tests:
    name: Rust project
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - "1.74" # Current minimum for experimental features
          - stable
          - beta
          - nightly

    steps:
      - uses: actions/checkout@v5

      - uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          components: rustfmt, clippy

      # Make sure we test with recent deps
      - run: cargo update
        # Note: some crates broke BC with 1.74 so we use the locked deps
        if: "${{ matrix.rust != '1.74' }}"
      - run: cargo build --all-features --all-targets
      - run: cargo test --all-features
      - run: cargo fmt --all -- --check
        # Note: Rust 1.74 doesn't understand edition 2024 formatting so no point
        if: "${{ matrix.rust != '1.74' }}"
      - run: cargo clippy --all-features --all-targets -- -D warnings

  msrv:
    name: MSRV
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5

      - uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: "1.70"

      # Test everything except experimental features.
      - run: cargo test --features backtraces,lock_api,parking_lot

  docs:
    name: Documentation build
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v5

      - uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: nightly

      - name: Build documentation
        env:
          # Build the docs like docs.rs builds it
          RUSTDOCFLAGS: --cfg docsrs
        run: cargo doc --all-features