borrow_mutex 0.1.1

Async Rust Mutex which does not require wrapping the target structure
Documentation
name: Rust

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

env:
  CARGO_TERM_COLOR: always

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Build
      run: cargo build --verbose
    - name: Run tests
      run: cargo test --verbose

  fmt:
    name: Fmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: cargo fmt

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@clippy
      - run: cargo clippy -- -D warnings

  msrv:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: taiki-e/install-action@cargo-hack
    - run: cargo hack check --rust-version --workspace --lib --ignore-private

  miri:
    runs-on: ubuntu-latest
    env:
      MIRIFLAGS: "-Zmiri-ignore-leaks" # ignore detached background threads - at least futures-timer spawns one
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@miri
      - name: Miri setup
        run: cargo miri setup
      # - name: MPMC spam test # takes forever under Miri
      #   run: cargo miri test --test mpmc_spam
      - name: Run tests
        run: |
          cargo miri test --test borrow_basic
          cargo miri test --test borrow_dyn
          cargo miri test --test abort
          cargo miri test --test borrow_basic_mt
          cargo miri test --test borrow_corner_cases