flyweights 0.1.5

Interned strings & bytestrings for client-controlled values in long-lived programs.
Documentation
name: flyweights presubmit

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

env:
  CARGO_TERM_COLOR: always

jobs:
  fmt_and_clippy:
    name: Format & Clippy
    runs-on: ubuntu-latest
    strategy:
      matrix:
        features: ['', '--features serde', '--features json_schema', '--all-features']
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy, rustfmt
      - name: Check formatting
        run: cargo fmt --all -- --check
      - name: Clippy
        run: cargo clippy --all-targets ${{ matrix.features }} -- -D warnings

  test_suite:
    name: Test Suite
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        # MSRV, stable, beta
        rust: ["1.81.0", "stable", "beta"]
        features: ['', '--features serde', '--features json_schema', '--all-features']
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.rust }}
      - name: Build debug
        run: cargo build --verbose ${{ matrix.features }}
      - name: Test debug
        run: cargo test --verbose ${{ matrix.features }}
      - name: Build release
        run: cargo build --verbose --release ${{ matrix.features }}
      - name: Test release
        run: cargo test --verbose --release ${{ matrix.features }}
      - name: Doc tests
        run: cargo test --doc ${{ matrix.features }}

  # Checking miri runs on a separate job that only gets the nightly toolchain.
  miri:
    name: Miri
    runs-on: ubuntu-latest
    strategy:
      matrix:
        features: ['', '--features serde', '--features json_schema', '--all-features']
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: nightly-2025-06-15
          components: miri
      - name: Run Miri
        run: cargo miri test ${{ matrix.features }}

  publish_check:
    name: Publish Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - name: Check publish
        run: cargo publish --dry-run --all-features