alloc-checked 0.1.3

Collections that don't panic on alloc failures
Documentation
name: CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  lint:
    name: Linting
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Set up Rust
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          components: rustfmt, clippy

      - name: Run rustfmt
        run: cargo fmt --check

      - name: Run clippy (all targets)
        run: cargo clippy --all-targets -- -D warnings

      - name: Run clippy with no_std
        run: cargo clippy --all-targets --features no_std -- -D warnings

  build_test:
    name: Test
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]
        features: ["", "--features=no_std"]
        profile: ["", "--release"]

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Set up Rust
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly

      # Build
      - name: Build
        run: cargo build ${{ matrix.profile }} ${{ matrix.features }}

      # Test
      - name: Test
        run: cargo test ${{ matrix.profile }} ${{ matrix.features }}

  miri_test:
    name: Miri Test
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Set up Rust
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
      - name: Install miri
        run: rustup +nightly component add miri
      - name: Run miri tests
        run: cargo miri test

  asan_test:
    name: Address Sanitizer Test
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Set up Rust
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
      - name: Install miri
        run: rustup +nightly component add miri
      - name: Run ASan tests
        run: RUSTFLAGS="-Z sanitizer=address" cargo test